@ComponentScan 和 @SpringBootApplication 同时使用出现问题

业务场景
在项目开发过程中,通常需要导入第三方jar包的时候需要加载到ioc容器中.
我们就要在启动类Application上使用@ComponentScan 这个注解来扫描第三方的包,然后就会出现报错,异常就是无法加载本地的某些类,例如某些Dao无法注入.


分析问题
本地类都没有被扫到ioc容器中,我们可以知道@SpringBootApplication 这个注解包含了@ComponentScan 它就会把启动类所在的包当作根路径,把下边所有符合的类扫描进ioc容器,那么我们现在知道了,就是这个注解的扫描功能失效了.


官方解决方案
20190226152643968.png
可以在@ComponentScan 里边把本地的路径给加上,这样就可以解决问题了,即可以扫描第三方jar包又可以扫描本地的路径


解决例子

@ComponentScan({"cn.aaa","com.bbb.cloud"})
@SpringBootApplication
public class GatewaydemoApplication {
    public static void main(String[] args) {
        SpringApplication.run(GatewaydemoApplication.class, args);
    }
}

cn.aaa是引入第三方jar包,com.bbb.cloud是启动类所在的根路径.
如果有更优雅的解决方案,可以联系我

你可能感兴趣的:(springboot,注解)