Spring Boot/マルチプロジェクト/違うパッケージのクラスをDIする

マルチプロジェクトで依存性があるプロジェクトが現在のプロジェクトとパッケージ階層が異なる場合 @Autowired 等で DI 指定してもそれが実際には入らなかったりする。

これは SpringBootApplication がそのパッケージ配下のクラスに対して ComponentScan するからである。

こういう場合はこのようにその起点となるパッケージを明示的に指示してやればよい。

@ComponentScan("com.example.hoge.piyo")

もしくは

親が同一パッケージならば

@SpringBootApplication(scanBasePackages={"com.example.hoge"})

もしくは追記

@SpringBootApplication(scanBasePackages={"com.example.hoge.piyo", "com.example.hoge.fuga"})