2016-12-06 96 views
7

我有以下的幾個我@SpringBootApplication S的的類路徑@Configuration類:春季啓動:配置類會被忽略,而不是裝

@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班。

有沒有人有過這個問題?

+0

如何應該是這個配置類來加載?你沒有展示你的Spring Boot bootstrap。 – chrylis

+0

對不起,它應該使用'@ SpringBootApplication'加載,即使用'@ ComponentScan'和'@ EnableAutoConfiguration'。 – user991710

+2

在這兩種情況下,您的Springboot應用程序類都在同一個包中的@Configuration類? –

回答

18

的@SpringBootApplication註釋(或者,更精確地推斷@ComponentScan註解)默認僅掃描類路徑旁邊和註解的類的下方。

所以,你的配置類必須放在旁邊或在您的應用程序類的子包。

+0

這是正確的答案。謝謝! – user991710