繁体   English   中英

Spring @ComponentScan注释不起作用

[英]Spring @ComponentScan annotation doesn't work

我有包装布局的春季启动应用程序示例:

main:
-com.foo
     Application.java       
-com.foo.services
      ItemService.java
      ItemRepository.java    
-com.foo.config
     Configuration.java
test:
-com.foo.services 
     ItemServiceIngegrationTest.java

我的集成测试无法运行,如果放入则无法找到ItemRepository bean

  @ComponentScan(basePackageClasses = { ItemService.class })

但如果我放,我会工作

  @ComponentScan(basePackageClasses = { Application.class })

诀窍在哪里?

规格说:

可以指定basePackageClasses()或basePackages()(或其别名value())来定义要扫描的特定包。 如果未定义特定包,则将从声明此批注的类的包进行扫描。

@EnableAutoConfiguration
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = { Configuration.class })
public class ItemServiceIntegrationTest { 
    . . .
}

@org.springframework.context.annotation.Configuration
@PropertySource("classpath:application.properties")
@ComponentScan(basePackageClasses = { ItemService.class })
public class Configuration extends AbstractMongoConfiguration {
   .  .  .
}   

javadoc说:

如果未定义特定包 ,则将从声明此批注的类的包进行扫描。

因此,它会从声明ComponentScan的包中进行扫描,除非定义了特定的包类。 你能把它放在Application类中吗?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM