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