備忘録っつーか、メモっていうか、チラシの裏。
JavaEEのPostConstruct
DIコンテナでBeanを管理する、つまりインスタンスプールを利用すると言う事は、コンストラクタでインスタンスを初期化するという new
ベースの自前でのインスタンス管理とは初期化の仕組みが異なって来る。
で、JavaEEの @ManagedBean
とかは @PostConstruct
でアノテートしたメソッドを初期化用に(コンストラクタの代わりに)呼び出して貰う事が出来る。
SpringBootでのPostConstruct相当は何か
探してみたけどアノテーションでは存在しないっぽい。
かわりに InitializingBean
というインタフェースがあって、このインタフェースが宣言してる afterPropertiesSet
と言うメソッドで、各プロパティへの注入が済んだ段階で呼び出してくれる模様。
厳密にどういうタイミングで呼び出されるのか良く解ってないので、この辺はSpringのBeanライフサイクルを調べてみる必要がある、、、のかな?
なんでこの辺の仕組みだけアノテーションベースじゃないんだろう??
逆に
@PreDestroy
に相当するインタフェースとして DisposableBean
というものがあるようだ。
しかしなんだ。
InitializingBean
と DisposableBean
ってネーミングブレてて気に食わないね?
InitializingBean
に合わせるなら DisposingBean
だし、
DispozableBean
に合わせるなら InitializableBean
だし、
個人的には後者が良いですね。
追記
Twitterの方で教えて貰いましたが @PostConstruct
使えました。
後でInitializingBeanとPostConstructの違いと言うか、使い分けを調べてみようかと思います。