2017-10-18 57 views
0

我有它使用SpringBoot和填充從queues.properties文件以下列方式一個POJO項目(這將被用來作爲一個依賴):如何獲得Spring Boot註釋並在普通的Spring應用程序中執行?

@Component 
@PropertySource({"classpath:queues.properties"}) 
@ConfigurationProperties("queue") 
public class QueuesConfig { 

private String messagingBrokerXml; 
private String messagingBrokerJolokia; 
private String messagingBrokerApi; 
private List<QueuesConfig.QueueModel> queues = new ArrayList(); 

public QueuesConfig() { 
} 

public String getMessagingBrokerXml() { 
    return this.messagingBrokerXml; 
} 

... 

通過在父拖着這種依賴性SpringBoot項目在其類路徑上有一個「queues.properties」文件,QueuesConfig對象被填充正確的值。

我目前正試圖通過在Plain Spring項目中使用此依賴項來實現相同的行爲。我可以確認PropertySource註釋獲得「執行」並且queues.properties文件是StandardServletEnvironment(屬於PropertySourceList中的條目)的一部分。

問題在於「ConfigurationPropertiesBindingPostProcessor」bean沒有被註冊(不是singletonObjects的一部分),因此應該填充POJO的代碼沒有被執行。

有沒有解決方法?

非常感謝!

+0

所以你基本上是說*我想使用Spring Boot的這個功能而不使用Spring Boot * ...您如何期待這將起作用?您需要在您的類路徑中使用Spring Boot jar,並手動執行Spring Boot爲您做的事情。然後,你獲得了什麼,但複雜性和類路徑上的附加jar。 –

回答

0

試着在你的父母春@Configuration類補充一點:

@EnableConfigurationProperties(QueuesConfig.class) 

有關詳細信息讀取春季啓動本節文檔。它是文本的幾個屏幕,但它值得;-)

https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-external-config.html#boot-features-external-config-typesafe-configuration-properties

也許它在測試應用效果很好,因爲你使用@SpringBootApplication一些高保真級魔法:)

+0

我想你還需要在SpringBoot項目中使用這個註釋 –

+0

感謝您的回覆!但是,這是一個彈簧引導註釋。我不想將春季啓動導入普通的春季應用程序。 –

+0

我目前的解決方法是在父應用程序上下文中手動配置「ConfigurationPropertiesBindingPostProcessor」bean。但是,我認爲這不是正確的做法。 –

相關問題