乐趣区

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

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


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


官方解决方案

可以在@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 是启动类所在的根路径.
如果有更优雅的解决方案, 可以联系我

退出移动版