Mit Spring 3 mit Federdaten habe ich ein Paket com.company.repository mit allen Klassen im Zusammenhang mit Federdaten Repository (ca. 50 Klassen).Unit-Tests sehr langsam, weil Spring Classpath scannt mehrere Male das gleiche Paket scannt
Die Komponente Scan als deklariert:
<context:component-scan base-package="com.company"/>
In meinen Unit-Tests, der Schritt Federkomponenten zu scannen ist sehr lang (ca. 10 Sekunden). Nachdem das Ablaufverfolgungsprotokoll aktiviert wurde, habe ich festgestellt, dass das Paket "com.company.repository" mehrmals gescannt wird. Tatsächlich wird die Methode ClassPathScanningCandidateComponentProvider.findCandidateComponents ("com.company.repository") mehrmals mit demselben Wert aufgerufen. Ich verstehe nicht, warum ich dieses Verhalten habe. Und ich überschreibe es nicht durch eine benutzerdefinierte Implementierung (oder ich finde nicht, wie das geht). Und ich verstehe nicht, warum das ist kein Cache in der Standardimplementierung?
Jemand hat eine Idee, warum ich dieses Verhalten habe? Es ist normal ?
In Ergänzung ist das folgende der Stapel auf meinen Fall bezogen werden:
ClassPathScanningCandidateComponentProvider.findCandidateComponents(String) line: 224
RepositoryBeanDefinitionBuilder.detectCustomImplementation(BeanDefinitionRegistry, ResourceLoader) line: 154
RepositoryBeanDefinitionBuilder.registerCustomImplementation(BeanDefinitionRegistry, ResourceLoader) line: 116
RepositoryBeanDefinitionBuilder.build(BeanDefinitionRegistry, ResourceLoader) line: 97
RepositoryBeanDefinitionParser.registerGenericRepositoryFactoryBean(RepositoryConfiguration<XmlRepositoryConfigurationSource>, ParserContext) line: 101
RepositoryBeanDefinitionParser.parse(Element, ParserContext) line: 71
JpaRepositoryNameSpaceHandler(NamespaceHandlerSupport).parse(Element, ParserContext) line: 73
BeanDefinitionParserDelegate.parseCustomElement(Element, BeanDefinition) line: 1419
BeanDefinitionParserDelegate.parseCustomElement(Element) line: 1409
DefaultBeanDefinitionDocumentReader.parseBeanDefinitions(Element, BeanDefinitionParserDelegate) line: 184
...
XmlBeanDefinitionReader.doLoadBeanDefinitions(InputSource, Resource) line: 390
Ich würde es nicht einen Komponententest nennen, wenn Sie sich auf Spring verlassen, um Ihre Bohnen zu erstellen. Das klingt eher nach Integrationstests. –