JOOQ3.15に上げるとSpring Bootが起動しない


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系を使っておいた方が無難でしょうか。