如果你因为Service注入失败,看过无数文章,甚至看过N份源码仍不得要领,希望我能终结你的问题;
SpringBoot中Service自动注入很方便,例:
Service.class(接口类)
ServiceImpl.class(实现类)
Controller.class(使用类)
用以上三个类来说一下自动注入:
单项目:分别ServiceImpl头上@Service,Controller中Service对象@Autowired即可享用;
Multi modules 场景,三个(种)类分别在三个module下:
moduleA : Service.class(com.example.moduleA )
moduleB : ServiceImpl.class ( com.example.moduleB )
moduleC : Controller.class ( com.example.moduleC )
此时B依赖A,C依赖A、B,添加好依赖关系。
如何自动注入?
1、接口、实现、使用类,姿势不变,按单项目方式写即可;
2、在moduleC的Application中做手脚!
如果你已经试过scanBasePackages,无论是在@SpringBootApplication方式还是@ComponentScan;
抑或试过@SpringBootApplication、@ComponentScan同时用,当你这么做时,一定是绝望的。
解决办法@SpringBootApplictaion(scanBasePackages=”com.example”)
核心就是:
Service 及 ServiceImpl均需在com.example包下
因为Service、ServiceImpl同在com.example下(C可以不在),所以我看作是同一次scan过程;
比如若是这样写scanBasePackages={” com.example.moduleA , com.example.moduleB “},则会失败;
当然(@ComponentScan=”com.example”)也是可以的,因为前者@SpringBootApplication已经包含@ComponentScan;
真相大白,相信这样很清楚了