質問: Springbootを使用して業務アプリケーション開発をしています。 DIという考え方に慣れておりません。 @Autowiredアノテーションを使用してDI(依存性の注入)を行うコードがあったとします。 このとき、設定ファイルが正常に記載されていないなどの理由でDIが正常に行われず、 @Autowiredアノテーションを付与したインスタンス変数がnullのまま、 DIによるインスタンス化がされないことがあります。 この時に「DIが失敗したんだな」ということは理解できるんですが、 何を原因として失敗したかを知る術は無いものか、ということが質問の趣旨となります。 実行時にNullPointerExceptionが出るだけで何が悪いのかがわからず、 原因究明に時間が掛かっており何かいい手はないものかと探していますが見つけきれていません。 また、前述の通り八方塞になった場合にDIによってインスタンス化せず、フレームワークの DI向けに作られたクラスであってもJavaコード上で通常通りnewでインスタンス化して ゴテゴテとコーディングすることについての賛否やご意見なども伺えると嬉しいです。
回答: "DIコンテナにインスタンスの生成やライフサイクルを任せる規約を利用する"の面で、DIコンテナを使う意味があるのではないかと個人的には思います。 特に規約に縛られることなくインスタンスを作りたいのであればDIコンテナを使う理由はなくなってしまいます。 Springであればアスペクトの注入も可能ですので、インスタンスの実行前処理・後処理もSpringに任せるといったこともできますね。