Reasonable Code

ほどよいコードを書きたい

Spring Framework

Spring Bootで別パッケージのクラスをDIできないときの対処法

投稿日:

Spring Bootで別パッケージのクラスをDIできないときの対処法をメモしておきます。

事象

上記のように、2つのパッケージ(com.example.commoncom.example.api)があり、パッケージ(com.example.api)のクラス内で別パッケージ(com.example.common)のクラスをDIしようとしたときにエラーが出ました。

原因

Spring Bootでは、デフォルトだと自身のパッケージ配下のクラスに対してコンポーネントスキャンするからです。

さきほどの例だと、com.example.api内でSpring Bootアプリケーションを起動した場合、com.example.api配下のクラスに対してコンポーネントスキャンすることになるので、com.example.common内のクラスをDIできなかったのです。

対処法

コンポーネントスキャンするパッケージを変更してやればいいのです。具体的には、アプリケーションクラスで@SpringBootApplicationscanBasePackages = {"コンポーネントスキャン対象のパッケージ"}を指定してやればOKです。

今回の例だと、com.example.apicom.example.commonの親パッケージのcom.exampleを指定してやることで、両方のパッケージをコンポーネントスキャンするようにしました。

まとめ

Spring Bootで別パッケージのクラスをDIできないときの対処法でした。

参考リンク

【RC】記事下記事内広告


-Spring Framework

Copyright© Reasonable Code , 2019 All Rights Reserved Powered by STINGER. App icon by icons8. Privacy Policy.