2015-11-19 96 views
1

不能解決默認值當我使用:使用ConfigFileApplicationContextInitializer爲@Value

@ContextConfiguration(classes = { DmiVehicleRTExportConfig.class }, 
    initializers = ConfigFileApplicationContextInitializer.class) 

我的集成測試是失敗的,如屬性:

${oauth2client.prematureTimeout:600} 

沒有得到600默認值。

這是通過使用:SpringApplicationConfiguration解決,但我想用ConfigFileApplicationContextInitializer.class而不是SpringApplicationConfiguration

謝謝。

+0

我有同樣的問題。 '''@ContextConfiguration(initializers = ConfigFileApplicationContextInitializer.class,classes = {DatabaseConfig.class}''' 沒有加載我的yaml的Config glass @Value注入... – Basil

回答

0

我使用

@SpringApplicationConfiguration 

當不得不在JUnit測試也這個問題,我通過添加類與「靜態無效的主要()」方法的配置類解決這個問題:

@Configuration 
public class SpringEmptyApplication{ 

    public static void main(String[] args) { 
     SpringApplication.run(SpringBootEmptyApplication.class); 
    } 
} 

我把這個類作爲第一個配置類的名單,如

@SpringApplicationConfiguration(classes = {  
SpringBootEmptyApplication.class, 
DmiVehicleRTExportConfig.class 
}) 

這個作品 適合我。

如果你想避免

@SpringApplicationConfiguration 

你可以嘗試

@ContextConfiguration(loader = SpringApplicationContextLoader.class ... 

這本身是如何@SpringApplicationConfiguration註釋,可能是這樣的裝載機可以解決問題,沒有嘗試...

1

我有同樣的問題。要添加PropertySourcesPlaceholderConfigurer.class需求:

@ContextConfiguration(classes = { DmiVehicleRTExportConfig.class, 
          PropertySourcesPlaceholderConfigurer.class }, 
initializers = ConfigFileApplicationContextInitializer.class) 

Spring團隊剛剛加了註釋有關:

使用ConfigFileApplicationContextInitializer不會單獨提供@Value支持( 「$ {...}」)注入。它唯一的工作是確保將application.properties文件加載到Spring的環境中。對於@Value支持,您需要額外配置PropertySourcesPlaceholderConfigurer或使用@SpringBootTest,其中一個將自動爲您配置。

相關問題