2016-03-30 23 views
1

Bir SpringBoot (1.3.3.RELEASE) uygulamasında jOOQ kullanarak bir sorun var çünkü jOOQ'nun ilk sorgu çalıştırılana kadar (ascii-art logosunu göremiyoruz) başlatılmadığı anlaşılıyor. . Bu bir sorun olmamalı ama kullanım durumumuzda öyle. Bu nedenle, uygulamanın başlatılması sırasında jOOQ'yi başlatmanın bir yolunu arıyoruz.jOOQ with SpringBoot

Yaptığımız şey, yalnızca uygulama içeriği oluşturulduğunda ve jOOQ'yu başlatmak için bir sorgu yürüttükten sonra otomatik olarak Spring tarafından yürütülen aşağıdaki fasulye yaratmasıdır.

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

Bunu yapmanın daha iyi bir yolu var mı? Lukas söylediği gibi

+0

? Btw: Fikriniz iyi görünüyor, bunu bir cevap olarak ayarlayabilirsiniz ... –

+0

_problem_, bazı Spring hizmetlerinin yürütülmesini engelleyen bir AOP'ye sahip olduğumuzdan ve bu denetimin bir denetim izi olarak kaydedilmesinden kaynaklandığından dolayı. Onları kaydeden modül RabbitMQ kullanarak istekleri alır ve 1 saniyelik bir zaman aşımı vardır. Sorun, jOOQ'un başlatılmasının bundan biraz daha fazla olması ve talebin başarısız olması ve Tavşan tarafından reddedilmesidir. Şimdi, geçici çözüm ile iyi çalışıyor :) –

+0

Oh, anlıyorum. Evet, büyük bir şemanız varsa, oluşturulan tüm sınıfların sınıf yüklemeleri biraz zaman alabilir. Gerçek bir sorguyu çalıştırmak, bunu çözmenin en iyi yoludur. Daha ucuz bir sorgu bile çalıştırabilirsiniz: 'create.fetchExists (BLACKBOX)' –

cevap

1

Yani, bu bir cevap var: jOOQ geç başlatma ile sorun kaynaklanır Neler

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