上下文中的多个包:组件扫描,弹簧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”)