webentwicklung-frage-antwort-db.com.de

mehrere Pakete im Kontext: Komponentenscan, Federkonfiguration

Wie kann ich mehrere Pakete in der spring-servlet.xml-Datei im context:component-scan-Element hinzufügen?

Ich habe versucht

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

und

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

und

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

aber bekam Fehler:

org.springframework.beans.factory.NoSuchBeanDefinitionException: No matching bean of type [x.y.z.dao.daoservice.LoginDAO] found for dependency:
167
Shams

Der folgende Ansatz ist korrekt:

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

Beachten Sie, dass der Fehler über x.y.z.dao.daoservice.LoginDAO klagt, der nicht in den oben genannten Paketen enthalten ist. Vielleicht haben Sie vergessen, ihn hinzuzufügen:

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

Sie können mehrere Basispakete hinzufügen (siehe Antwort von axtavt ), aber Sie können auch filtern, was geprüft wird im Basispaket:

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

Anmerkungsansatz

@ComponentScan({ "x.y.z", "x.y.z.dao" })
38
biology.info
<context:component-scan base-package="x.y.z"/>

funktioniert, da die restlichen Pakete Unterpakete von "x.y.z" sind. Sie müssen also nicht jedes Paket einzeln erwähnen.

19
Irene

Ein weiterer allgemeiner Annotationsansatz:

@ComponentScan(basePackages = {"x.y.z"})
5
Robocide

Wenn x.y.z das übliche Paket ist, können Sie Folgendes verwenden:

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

es enthält alle Pakete, die mit x.y.z beginnen, wie: x.y.z.controller, x.y.z.service usw.

1
Amit Sharma

Zum Beispiel haben Sie das Paket "com.abc" und Sie haben mehrere Pakete darin, die Sie gerne verwenden können

@ComponentScan("com.abc")
0
sForSujit