我在@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
类。
以前是否有人遇到此问题?
答案 0 :(得分:35)
默认情况下,@ SpringBootApplication注释(或者更确切地说是推断的@ComponentScan注释)仅扫描注释类旁边和下面的类路径。
因此,您的配置类必须放在Application类的子包旁边或其中。