2016-03-30 98 views
1

在SpringBoot(1.3.3.RELEASE)應用程序中使用jOOQ時出現問題,因爲它似乎在執行第一個查詢之前jOOQ未初始化(我們沒有看到ascii-art徽標) 。這不應該是一個問題,但在我們的使用情況下是這樣。所以我們正在尋找一種在應用程序啓動期間初始化jOOQ的方法。使用SpringBoot初始化jOOQ

我們所做的只是創建下面的bean,一旦創建了應用程序上下文並且執行一個查詢來初始化jOOQ,Spring就會自動執行它。

@Bean 
CommandLineRunner runner(DSLContext create) { 
    new CommandLineRunner() { 
     @Override 
     void run(String... args) throws Exception { 
      create.fetchCount(create.select(BLACKBOX)) 
     } 
    } 
} 

有沒有更好的方法來做到這一點?

+0

有什麼問題由jOOQ後期初始化引起的?順便說一句:你的想法看起來不錯,你可以將其設置爲一個答案... –

+0

_problem_是因爲我們有一個AOP攔截某些Spring服務的執行並將該執行記錄爲審計跟蹤。記錄它們的模塊會使用RabbitMQ接收請求,並且具有1秒的超時時間。問題是jOOQ的初始化需要多一點,而請求失敗並被兔拒絕。現在,解決方法它工作正常:) –

+0

哦,我明白了。是的,如果您有大型模式,則所有生成的類的類加載可能需要一段時間。運行實際查詢是解決此問題的最佳方法。你甚至可以運行一個更便宜的查詢:'create.fetchExists(BLACKBOX)' –

回答

1

所以,盧卡斯說,這是一個答案:

@Bean 
CommandLineRunner runner(DSLContext create) { 
    new CommandLineRunner() { 
     @Override 
     void run(String... args) throws Exception { 
      create.selectOne().fetch() 
     } 
    } 
}