plusieurs paquets dans leur contexte: component-scan, spring config

Comment puis-je ajouter plusieurs paquets dans spring-servlet.fichier xml dans l'élément context:component-scan ?

j'ai essayé

<context:component-scan base-package="z.y.z.service" base-package="x.y.z.controller" />

et

<context:component-scan base-package="x.y.z.service, x.y.z.controller" />

et

<context:component-scan base-package="x.y.z.service" />
<context:component-scan base-package="x.y.z.controller" />

mais suis d'erreur:

org.springframework.beans.factory.NoSuchBeanDefinitionException: No matching bean of type [x.y.z.dao.daoservice.LoginDAO] found for dependency:
161
demandé sur ROMANIA_engineer 2011-03-11 08:50:18

7 réponses

l'approche suivante est correcte:

<context:component-scan base-package="x.y.z.service, x.y.z.controller" /> 

notez que l'erreur se plaint de x.y.z.dao.daoservice.LoginDAO , qui n'est pas dans les paquets mentionnés ci-dessus, peut-être avez-vous oublié de l'ajouter:

<context:component-scan base-package="x.y.z.service, x.y.z.controller, x.y.z.dao" /> 
233
répondu axtavt 2011-03-11 09:37:22

vous pouvez ajouter plusieurs paquets de base (voir réponse d'axtavt ), mais vous pouvez aussi filtrer ce qui est scanné à l'intérieur du paquet de base:

<context:component-scan base-package="x.y.z">
   <context:include-filter type="regex" expression="(service|controller)\..*"/>
</context:component-scan>
42
répondu Sean Patrick Floyd 2017-05-23 11:47:30

Annotation Approche

@ComponentScan({ "x.y.z", "x.y.z.dao" })
38
répondu biology.info 2015-03-18 10:53:25
<context:component-scan base-package="x.y.z"/>

fonctionnera puisque les autres paquets sont des sous-paquets de" X. Y. z". Ainsi, vous n'avez pas besoin de mentionner chaque paquet individuellement.

17
répondu Irene 2013-06-26 00:44:10

une Autre approche d'Annotation:

@ComponentScan(basePackages = {"x.y.z"})
5
répondu Robocide 2018-02-12 21:52:09

si X. Y. z est le paquet commun alors vous pouvez utiliser:

<context:component-scan base-package="x.y.z.*">

il comprendra tout le paquet qui commence par X. Y. Z comme: x.Y. z. contrôleur, X. Y. z. service etc.

0
répondu Amit Sharma 2016-12-16 04:45:48

par exemple, vous avez le paquet" com.abc" et vous avez plusieurs paquets à l'intérieur, vous pouvez utiliser comme

@ComponentScan("com.abc")
0
répondu sForSujit 2018-02-12 21:52:20