Spring Boot引入某个包下部分Bean
Posted 神一样的存在
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring Boot引入某个包下部分Bean相关的知识,希望对你有一定的参考价值。
Spring Boot环境下,假如有个第三方包third.jar,内有com.xxx.config目录,在com.xxx.config目录下有3个被@Component注释的类分别是A, B, C,现在我们需要在应用中让A注册到Spring容器中,而B,C不注册进来。有2个方法:
- 使用@ComponetScan的Filter,类似这样:@ComponentScan(basePackageClasses = A.class, useDefaultFilters = false, includeFilters = Filter(type = FilterType.ASSIGNABLE_TYPE, classes = A.class)),说明basePackageClasses = A.class表示扫描A.class所在的包,也就是com.xxx.config,useDefaultFilters = false表示被@Service,@Componet,@Configuration这类注释的类不能被扫描注册,includeFilters下的ype = FilterType.ASSIGNABLE_TYPE表示手动指定需要被include类(还有个类似的exclude),classes = A.class表示A被注入到容器。总体来说就是:让om.xxx.config被include到Spring容器。
- 上述方式较长,是一种标准方式,还有一种比较简单:通过Spring Boot的@Import(A.class)这种方式也能实现上面的功能。不过我习惯第一种方式一点,第二这种方式总感觉有点怪怪的。
以上是关于Spring Boot引入某个包下部分Bean的主要内容,如果未能解决你的问题,请参考以下文章
[Soul 源码之旅] 1.8 Soul插件初体验 (Divide-> Upstream 同步)
spring boot注入error,Consider defining a bean of type 'xxx' in your configuration问题解决方案