以下の内容はhttps://uga-box.hatenablog.com/entry/2022/03/29/000000より取得しました。


【Spring Boot】AutoConfigureで特定のライブラリがクラスパス上に存在する場合に適用するようにしたい

Spring BootのAutoConfigureでライブラリを作る際に、特定のライブラリがクラスパス上に存在する場合にBean定義した設定を適用するようにしたい

AutoConfigureとは
3rdパーティライブラリなどに対して、ある設定をした上でSpring上で利用したい場合に、それをあらかじめAutoConfigure用のBean定義をして用意しておくことで、Spring Bootが自動でそれらをインポートする仕組み

ライブラリに対する共通的な設定をコンテキストをまたがって行いたい場合に有用

このとき例えば、AutoConfigureでライブラリをBean設定していたにもかかわらず、3rdパーティライブラリをクラスパスにないままそのライブラリの利用者を利用しようとすると実行時にエラーになる可能性がある

なので、特定のライブラリがクラスパス上に存在する場合に適用するようにしたい

@ConditionalOnClassを使う

Spring Bootは、AutoConfigureに設定条件を指定できるようにアノテーションを提供している

クラスがクラスパス上に存在する場合に適用するようにする条件をつけるには@ConditionalOnClassがあり、これを利用するのがよさそう

spring.pleiades.io

例えば、ObjectMapperに対する設定をAutoConfigureでしたい場合、当然ObjectMapper.classがある場合に設定をしたいので、以下のようにアノテーションをつける

@Configuration(proxyBeanMethods = false
@ConditionalOnClass({ObjectMapper.class})
public class MyJacksonAutoConfiguration {

  @Bean
  @Order(Ordered.LOWEST_PRECEDENCE)
  @ConditionalOnClass(Jackson2ObjectMapperBuilder.class)
  Jackson2ObjectMapperBuilderCustomizer myStandardObjectMapperBuilderCustomizer() {
    return new MyStandardObjectMapperBuilderCustomizer();
  }
}



以上の内容はhttps://uga-box.hatenablog.com/entry/2022/03/29/000000より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14