我@Configuration在一些@SpringBootApplications 的类路径上有以下类:
@Configuration
@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类)。
Client
服务1正确启动并加载此配置。我可以看到在启动过程中ApiConfig急切地初始化了一个类型的bean 。
ApiConfig
服务2无法正确启动:上面的配置类仅被忽略且未初始化。
服务在单独的JVM中启动。
这些服务具有几乎相同的非常小的application.properties文件:
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课。
有人遇到过这个问题吗?
默认情况下,@SpringBootApplication批注(或更确切地说是@ComponentScan批注)仅扫描带注释的类旁边和下方的类路径。
因此,您的配置类必须放在Application类的旁边或子包中。