Spring Boot:简单地忽略配置类并且不加载

时间:2016-12-06 19:31:23

标签: java spring spring-boot

我在@Configuration s的几个类路径中有以下@SpringBootApplication课程:

@Configuration
@Import({MainConfig.class, RestConfig.class})
public class ApiConfig {

    @Bean
    @Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE)
    public Client client() throws ExecutionException, InterruptedException {
        return service.create(Client.class);
    }

}

我有两个使用此配置的服务(具有不同名称的Client类)。

服务1正确启动并加载此配置。我可以在启动时看到一个ApiConfig类型的bean被急切地初始化。

服务2启动错误:上述配置类被忽略而未初始化。

服务在不同的JVM中启动。

Ther服务有几乎相同的,非常小的application.properties文件:

spring.application.name=xxx-api
server.port=0
eureka.name=xxx.api
# Only for reading properties from a central location
context.initializer.classes=com.package.contextClass

我甚至不确定我可以在问题中写出哪些其他信息。我现在已经经历了几个小时的日志并且没有看到明显的区别,只是它明显地忽略了我的@Configuration类。

以前是否有人遇到此问题?

1 个答案:

答案 0 :(得分:35)

默认情况下,@ SpringBootApplication注释(或者更确切地说是推断的@ComponentScan注释)仅扫描注释类旁边和下面的类路径。

因此,您的配置类必须放在Application类的子包旁边或其中。