上下文中的多个包:组件扫描,弹簧configuration

如何在context:component-scan spring-servlet.xml文件中添加多个包context:component-scan元素?

我努力了

 <context:component-scan base-package="zyzservice" base-package="xyzcontroller" /> 

 <context:component-scan base-package="xyzservice, xyzcontroller" /> 

 <context:component-scan base-package="xyzservice" /> <context:component-scan base-package="xyzcontroller" /> 

但有错误:

 org.springframework.beans.factory.NoSuchBeanDefinitionException: No matching bean of type [xyzdao.daoservice.LoginDAO] found for dependency: 

以下方法是正确的:

 <context:component-scan base-package="xyzservice, xyzcontroller" /> 

请注意,错误抱怨xyzdao.daoservice.LoginDAO ,这不在上面提到的包中,也许你忘了添加它:

 <context:component-scan base-package="xyzservice, xyzcontroller, xyzdao" /> 

您可以添加多个基础包(请参阅axtavt的答案 ),但是您也可以过滤基础包内扫描的内容:

 <context:component-scan base-package="xyz"> <context:include-filter type="regex" expression="(service|controller)\..*"/> </context:component-scan> 

注释方法

 @ComponentScan({ "xyz", "xyzdao" }) 
 <context:component-scan base-package="xyz"/> 

将工作,因为其余的包是“xyz”的子包。 因此,你不需要单独提及每个包装。

另一个一般的注释方法:

@ComponentScan(basePackages = {“xyz”})

如果xyz是常用的包,那么你可以使用:

 <context:component-scan base-package="xyz*"> 

它将包括所有以xyz开始的包,如:xyzcontroller,xyzservice等

例如,你有一个“com.abc”包,里面有多个包,你可以用like

@ComponentScan( “com.abc”)

Interesting Posts