multiple packages in context:component-scan, spring config
How can I add multiple packages in spring-servlet.xml file in context:component-scan
element?
I have tried
<context:component-scan base-package="z.y.z.service" base-package="x.y.z.controller" />
and
<context:component-scan base-package="x.y.z.service, x.y.z.controller" />
and
<context:component-scan base-package="x.y.z.service" />
<context:component-scan base-package="x.y.z.controller" />
but got error:
org.springframework.beans.factory.NoSuchBeanDefinitionException: No matching bean of type [x.y.z.dao.daoservice.LoginDAO] found for dependency:
The following approach is correct:
<context:component-scan base-package="x.y.z.service, x.y.z.controller" />
Note that the error complains about x.y.z.dao.daoservice.LoginDAO
, which is not in the packages mentioned above, perhaps you forgot to add it:
<context:component-scan base-package="x.y.z.service, x.y.z.controller, x.y.z.dao" />
Annotation Approach
@ComponentScan({ "x.y.z", "x.y.z.dao" })
You can add multiple base packages (see axtavt's answer), but you can also filter what's scanned inside the base package:
<context:component-scan base-package="x.y.z">
<context:include-filter type="regex" expression="(service|controller)\..*"/>
</context:component-scan>