聞きたいこと
Spring bootのDIに関して、privateメソッドから呼び出す際の仕様について
発生している問題・エラーメッセージ
privateメソッドからサービスクラスをDIしようとすると、「NullPointerException」が発生してしまいました。 こちらのメソッド自体は、privateですが、DI元のクラスとメソッドはpublicになっております。 publicメソッドからDIをすれば問題なくDIされることを確認済ですが、privateメソッドからDIができない理由等、ご教示いただけますと幸いです。
該当のソースコード
java
@Controllerpublic class TestController {@AutowiredTestService testService; ←このDIがリクエストを受けた際にnullになります。 ・・・・ } @RequestMapping(value = "/register_test1") public String fileTest1(Model model) {・・・・ testService.setTest(""); ←こちらのpublicメソッドからはDIができました return "test1";} @RequestMapping(value = "/register_test2") private String fileTest2(Model model) {・・・・ testService.setTest(""); ←こちらのprivateメソッドからはDIができませんでした return "test2";}
サービスクラス
java
@Servicepublic class TestService { public Object setTest() { ・・・・ return object; }}
試したこと
・該当サービスクラスをnewしていないかどうか
・mavenクリーン、プロジェクトの更新
似たような質問者様の回答
以下に、privateメソッドを試験する際に、DIが実施されず、NullPointExceptionが発生した旨の記述がありました。(根本的な理由は記載されていないようでした。。)
このような原因がわからず、理由が知りたく質問させていただきました。
ご回答いただけますと幸いです。
https://teratail.com/questions/123978

0 コメント