気軽に楽しくプログラムと遊ぶ

自分が興味があってためになるかもって思う情報を提供しています。

Spring Bean定義について

Bean定義の利用方法

Bean定義すると、Springのアプリケーションコンテキストにそのメソッドの戻り値が登録される。この登録されたオブジェクトは、Springの管理下に置かれた「Bean」として利用可能になる。

定義例

@Bean
    fun testAPI(): TestAPI =
        TestAPI()
            .info(
                Info().version("1.1")
                    .title("API")
                    .description("test API"),
            )

利用方法

1. DI(依存性注入)による利用

@Autowiredやコンストラクタインジェクションを使用して、他のクラスで利用できる。

@Service
class ExampleService(
    private val testAPI: TestAPI // コンストラクタインジェクション
) {
    fun useAPI() {
        println(testAPI.info.title)
    }
}

2. アプリケーションコンテキストから取得

ApplicationContextを使用して、Beanを直接取得することが可能である。

@Component
class ExampleComponent(
    private val applicationContext: ApplicationContext
) {
    fun getBean() {
        val testAPI = applicationContext.getBean(TestAPI::class.java)
        println(testAPI.info.version)
    }
}

3. 他の@Bean定義で利用

別の@Beanメソッド内で、定義済みのBeanを利用することができる。

@Bean
fun anotherBean(testAPI: TestAPI): SomeOtherClass {
    return SomeOtherClass(testAPI)
}

注意点

  • @Beanで定義されたオブジェクトは、デフォルトでシングルトンとして管理される。
  • 主に外部ライブラリのオブジェクトや複雑な初期化が必要なオブジェクトを登録する際に使用する。