🙄

Spring BootでjOOQの設定変更

2024/03/10に公開

Spring BootでjOOQの設定を変更したい場合、DefaultConfigurationCustomizerを使うと JooqAutoConfiguration の中で変更することができる。

環境

  • Spring Boot: 3.2.3
  • jOOQ: 3.18.11
  • Kotlin: 1.9.22

DefaultConfigurationCustomizerの作成

DefaultConfigurationCustomizerを実装し、Bean登録することで設定変更が可能となる。
今回はClockの設定を変更するCustomizerを追加する。

@Component
class ClockCustomizer: DefaultConfigurationCustomizer {
    override fun customize(configuration: DefaultConfiguration) {
        // 固定のClockをjOOQに設定
        val clock = Clock.fixed(Instant.parse("2024-03-01T00:00:00Z"), Clock.systemDefaultZone().zone)
        configuration.set(clock)
    }
}

テスト

DIコンテナに登録されているDSLContextからconfigurationを確認するとClockが差し代わっていることがわかる。

@SpringBootTest
class ClockCustomizerTest(
) {
    @Autowired
    private lateinit var dsl: DSLContext

    @Test
    fun clock() {
        val clock = dsl.configuration().clock()
        assertEquals("2024-03-01T00:00:00Z", clock.instant().toString())
    }
}

Discussion