小编典典

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

spring-boot

@Configuration在一些@SpringBootApplications 的类路径上有以下类:

@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中启动。

这些服务具有几乎相同的非常小的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课。

有人遇到过这个问题吗?


阅读 2475

收藏
2020-05-30

共1个答案

小编典典

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

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

2020-05-30