Spring Bootで作られたアプリの実装をみていて、@ComponentScan
と@Import
の使い分けがよくわからなかったので調査する
どちらもマルチモジュール のように複数のプロジェクトでクラスを共有したりするときに使う
ただ、@Import
ではConfiguration
を、@ComponentScan
はパッケージ外のコンポーネントを利用するときに指定するもの
@Import
単純に@Import(Configrationクラス.class)
とすると、そのConfiguration をDIすることができるが、それだけでなくConfiguration から他の Configuration を読み込むことができるため、アプリ側がConfiguration の依存関係を知る必要なく使うことができる
@ComponentScan
パッケージが異なるクラスをDIする場合に使用する
引数なしで、そのパッケージすべてをDIすることもできれば、引数を指定して特定のクラスだけをDIすることもできる