我正在维护一个包含两组主程序包的项目,该项目使用的是Spring和Spring MVC,其中一个程序包包含多个控制器,并使用XML配置进行扫描(<context:component-scan />
)。
问题是另一个包中有一个类(未扫描),我需要扫描这个类,但只需要这个类,而不是包中的其他类。我现在无法改变它的包装,因为它现在风险太大了。
有没有办法使用注释或XML?
来完成此操作答案 0 :(得分:51)
@Bart对XML的说法。
如果您需要使用注释引入该类,请将以下内容添加到@Configuration
个类之一
@ComponentScan(
basePackageClasses = YourClass.class,
useDefaultFilters = false,
includeFilters = {
@ComponentScan.Filter(type = ASSIGNABLE_TYPE, value = YourClass.class)
})
答案 1 :(得分:20)
简单地添加就像你的上下文中的bean一样。
<bean class="my.package.MyClass" />
答案 2 :(得分:0)
除了Emerson Farrugia所描述的方法外,从Spring Framework 4.2 as mentioned in the documentation here开始就已经支持了一种较为简单的解决方案。
从Spring Framework 4.2开始,
@Import
还支持常规引用 组件类,类似于AnnotationConfigApplicationContext.register
方法。这是 如果要避免使用以下方法扫描组件,此功能特别有用 一些配置类作为切入点,以明确定义所有 您的组件。
因此您的示例将变成:
@Import(YourClass.class)
答案 3 :(得分:-4)
您需要使用过滤器来过滤掉其他类,并且只需要包含您要扫描的类
<context:component-scan base-package="com.abc" >
<context:include-filter type="regex"
expression="com.abc.customer.dao.*DAO.*" />
</context:component-scan>