Spring Boot组件扫描仅包含特定包

时间:2016-07-20 09:01:22

标签: java spring dependency-injection spring-boot component-scan

我有两个Spring Boot项目,可以调用它们FooBarBar中包含Foo作为依赖项。现在,我想在Bar的{​​{1}}中仅包含来自Component Scan的特定包(例如:Foo)。我知道您可以通过com.example.bar.ctrl排除软件包,但这样会更加努力,每次我在excludeFilters创建新软件包时都需要维护exclude filter-list。 存档该行为的最佳方式是什么?

2 个答案:

答案 0 :(得分:4)

我会这样做:

1)Foo包将使com.example.foo下的所有bean以及@SpringBootApplication主类都在该包中,以便它将扫描来自com.example.foo包的所有bean。

2)在条形码包com.example.bar.ctrl中,我会使用@Configuration注释创建@ComponentScan而没有任何属性,因此它只会扫描ctrl个包+子包。

3)我将@Import从第2点开始的配置类转换为从第1点开始的主类

@ComponentScan includeexclude属性无需明确的包裹。

答案 1 :(得分:0)

如果您使用的是@ComponentScan注释,则它具有basePackages属性,可以扫描String[]个包。