Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/345.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Spring@ComponentScan注释不';行不通_Java_Spring_Spring Java Config_Spring Mongodb_Component Scan - Fatal编程技术网

Java Spring@ComponentScan注释不';行不通

Java Spring@ComponentScan注释不';行不通,java,spring,spring-java-config,spring-mongodb,component-scan,Java,Spring,Spring Java Config,Spring Mongodb,Component Scan,我有spring boot应用程序示例和包布局: main: -com.foo Application.java -com.foo.services ItemService.java ItemRepository.java -com.foo.config Configuration.java test: -com.foo.services ItemServiceIngegrationTest.java 我的集成测试无

我有spring boot应用程序示例和包布局:

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 = { Application.class })
诀窍在哪里?

说明书上说:

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

javadoc说:

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


因此,除非定义了特定的包类,否则它将从声明
ComponentScan
的包中进行扫描。能否将其放入
应用程序
类中?

如果将其定义为驻留在较低级别的包中的应用程序,则它可以工作,但如果在较高级别的包中定义它,则无法工作。您将其定义为的包是
父包
包,它扫描所有
子包
包。是的,我知道它适用于应用程序-我的描述中说明了这一点:)。我的观点是,根据规范,它甚至应该与子包一起工作。是的,我同意。根据文档,您的两个注释似乎都应该找到ItemRepository bean。
  @ComponentScan(basePackageClasses = { Application.class })
@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 {
   .  .  .
}