スプリングデータでスプリング3を使用すると、私はcom.company.repositoryにスプリングデータリポジトリに関連するすべてのクラス(約50クラス)を持ちます。ユニットクラスのテストは非常に遅いです。クラスパススキャンで同じパッケージを複数回スキャンします。
コンポーネントスキャンは以下のように宣言される:私のユニットテストで
<context:component-scan base-package="com.company"/>
、スプリング部品をスキャンするステップは、(約10秒)非常に長いです。 トレースログを有効にした後、パッケージ「com.company.repository」が複数回スキャンされていることに気付きました。 実際、ClassPathScanningCandidateComponentProvider.findCandidateComponents( "com.company.repository")メソッドは同じ値で何度も呼び出されます。 なぜこの動作があるのかわかりません。 そして私はそれをカスタム実装でオーバーライドしません(またはそれを行う方法がわかりません)。 そして、なぜデフォルトの実装でキャッシュがないのか分かりません。
誰かがこの動作をなぜ持っているのでしょうか?それは普通ですか?補数で
、次は私の場合に関連するスタックです:
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
あなたがBeanを作成するためにSpringに頼っているのであれば、私は単体テストと呼んでいません。それは統合テストのように聞こえる。 –