一尘不染

Exclude subpackages from Spring autowiring?

spring

在Spring 3.1中,有没有一种简单的方法可以将exclude a package / sub-package 排除在自动装配之外?

例如,如果我想在的基本软件包中包括组件扫描,com.example是否有一种简单的方法可以排除com.example.ignore

(为什么?我想从集成测试中排除一些组件)


阅读 297

收藏
2020-04-17

共1个答案

一尘不染

我不确定你是否可以使用<exclude-filter>明确排除软件包,但是我敢打赌,使用正则表达式过滤器可以有效地带你到达那里:

 <context:component-scan base-package="com.example">
    <context:exclude-filter type="regex" expression="com\.example\.ignore\..*"/>
 </context:component-scan>

为了使其基于注释,你可以使用@ com.example.annotation.ExcludedFromITests注释要为集成测试排除的每个类。然后,组件扫描将如下所示:

 <context:component-scan base-package="com.example">
    <context:exclude-filter type="annotation" expression="com.example.annotation.ExcludedFromITests"/>
 </context:component-scan>

这很清楚,因为现在你已经在源代码本身中记录了该类不打算包含在集成测试的应用程序上下文中。

2020-04-17