質問: Spring Boot でコマンドラインアプリケーションを作っていたのですが、急きょ、アプリではなくライブラリにしなければならなくなりました。 開発環境:Eclipse、Windows7 開発言語:Java フレームワーク:Spring Boot ※以下、xxxxx.jarというのが私が作成したもの。 ### 現在の起動方法 1. 起動用batファイルでjavaコマンドを実施(java -cp xxxxx.jar xxx.xxx.MainClass) 2. xxxxx.jar起動 ### 変更後の起動方法 1. 既存アプリケーションに当該ライブラリの情報を設定(対象ファイル、クラス、メソッド) 2. 既存アプリケーションは当該ライブラリをロードして、設定されたクラスとメソッドを実行 Springフレームワークの機能を利用しつつ、このように移行することはできないでしょうか。 今現在、メインクラスのmainメソッドを削除し、executeというメソッドを作成して既存アプリに登録していますが、以下のエラーでうまく起動できていません。 ``` Failed to process import candidates for configuration class [xxx.xxx.MainClass]; nested exception is java.lang.IllegalArgumentException: No auto configuration classes found in META-INF/spring.factories. If you are using a custom packaging, make sure that file is correct. ``` フレームワークを利用してアプリを作る為の情報は山ほどありますが、フレームワークを利用してライブラリ(mainメソッドが無い)を作る方法はないのでしょうか。 その様なことは一般的にできないのでしょうか。 追記 -- 試行錯誤した結果、上記エラーはなくなりました。 しかし、AutowiredアノテーションによるDIがされません。
回答: AutowiredでDIされなかったクラスは呼び出し元から`new`されたインスタンスでした。 その為、当該クラスをラップしたクラスにて目的のクラスを`ApplicatoinContext#getBean()`を利用してインスタンス生成するようにしたところ、DIされるようになりました。