2021/8/28現在、Spring BootとJOOQ 3.15を組み合わせるとDSLContextのインジェクションに失敗するようになりました。
Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled.
2021-08-28 08:51:20.130 ERROR 10463 --- [ main] o.s.b.d.LoggingFailureAnalysisReporter :
***************************
APPLICATION FAILED TO START
***************************
Description:
Parameter 0 of constructor in com.example.securingweb.UsersController required a bean of type 'org.jooq.DSLContext' that could not be found.
Action:
Consider defining a bean of type 'org.jooq.DSLContext' in your configuration.
Disconnected from the target VM, address: '127.0.0.1:58570', transport: 'socket'
Process finished with exit code 1
spring-boot-starter-jooq
を単独で使う分には3.14系が使用されますが、自分はnu.studer.jooq
gradleプラグインも使用しており、そちらが依存しているため3.15が入っていました。
なぜエラーになるのか?
JOOQ 3.15からR2JDBCをサポートするようになり、io.r2dbc:r2dbc-spi:0.8.5.RELEASE
が依存関係に追加されR2dbcAutoConfigurationが意図せず発動してしまうためです。
対処法
(R2JDBCを使用しないならばですが)R2dbcAutoConfiguration.class
をexcludeすれば動かすことが可能です。
@SpringBootApplication(exclude = { R2dbcAutoConfiguration.class })
public class MyApplication {
public static void main(String[] args) throws Throwable {
SpringApplication.run(SecuringWebApplication.class, args);
}
}
ただ、上記のIssueでやりとりされていますが、JOOQ 3.15の無償版はJava11以上が必要なため、Java8をサポートしているSpring Boot2.5系で3.15がサポートされることはないのかもしれません。
商用ではおとなしく3.14系を使っておいた方が無難でしょうか。