株式会社ブログ開発メモ【Spring】newしたインスタンスのフィールドがDIされる方法Springフレームワークを利用して、Javaのライブラリを開発しています。変わった構成で利用することが想定されており、特にDIについて困っていました。ライブラリを利用するのは既存のアプリケーション(コード改変不可)既存アプリケーションには様々なイベントが用意されている上記イベントと当該ライブラリのクラス/メソッドを関連付けることが可能ライブラリのメソッド起動方法はリフレクションを利用している問題だったのは、メソッド起動方法で、よくあるリフレクションを利用してメソッドが起動されているところです。この方法だと、クラスはnewを利用してインスタンス生成される為、含まれるフィールドがDIされませんでした。}}LegacyAppMainクラスは改変不可の為、newによるインスタンス生成は避けられません。Autowiredアノテーションを利用しないでインスタンス生成したクラスのフィールドがDIされる為には、以下のようにApplicationContextからインスタンスを生成する必要がありました。スキャン対象のコンポーネントをXMLに定義します。--></beans>ApplicationContextの生成は上記のXMLを指定します。hogeServiceがちゃんとDIされる為、ヌルポにならないこの方法も知らなかったため、かなりハマってしまいました。既存アプリからの呼び出しの後に工夫しなければいけない為、さらにハマりました。考えた結果、ひとつクラスをラップするようにしました。}}このように呼び出しの階層をすこしずらしたりすることが、パズルを組み合わせていくような感覚でプログラミングのおもしろいところかな、なんて思ったりしました。あわせて読む新着記事ゲームマーケット2019秋に出展致しました。ゲームマーケット2019春に出展致しました。59ビューハンガリアン記法って気持ち悪い。