2016-07-07 57 views
0

我有一個彈簧啓動應用程序,有一個.yml文件中定義的很多屬性。我正在從文件中的屬性轉移到雲中,所以爲此,我在春季的雲領事中使用了鍵/值功能。正確的方式來從彈簧雲領事加載價值/屬性

我能夠檢索從領事給定鍵的值,但我所看到記錄的唯一途徑,只有這樣,我已經能夠做到這一點是像這樣:

@Autowired 
private Environment env; 

    @RequestMapping("/test") 
    String home() { 
     return env.getProperty("test.property"); 
    } 

這是好的和花花公子,但我仍在設置一些現有的類加載特性的老路上:

@Value("${test.property}") 
String testProperty; 

增加春季雲領事依賴於我的項目後,我得到新的錯誤說,所有這些屬性不能解決。我認爲這是因爲spring boot會看到consul的依賴關係,並且現在忽略了yml文件或其中的一部分。

有沒有辦法讓這些屬性從領事加載而不必更改類中的任何代碼?或者我是否需要更改這些類以遵循使用env對象的示例?

此外,任何進一步瞭解春季雲領事如何與春季啓動爲此特定目的工作將不勝感激。關於它的文檔並不多。

+0

如果您在Spring Cloud Config Client中使用它,那麼'@ Value'應該可以工作。 –

+0

@ M.Deinum我不是,我正在使用Spring Cloud Consul – Seephor

+0

這是服務器端,春天的雲領事可以很容易地與Spring雲配置集成,然後你就可以隨心所欲地獲得你想要的東西。請參閱http://cloud.spring.io/spring-cloud-consul/spring-cloud-consul.html(最後一節)。 –

回答

2

我能夠得到這個工作,但它有點棘手。您需要添加春季雲領事啓動器依賴項。我只是春天的雲領事配置依賴。

我不得不領事配置屬性添加到我的application.yml和bootstrap.yml都在我的自舉屬性剛剛設置的格式和數據項:

spring: 
    cloud: 
    consul: 
     config: 
     format: YAML 
     data-key: data 

這告訴春天開機加載yaml blob,這是我的應用程序配置雲目錄中的關鍵數據的值。

我的application.yml中的配置是它們在示例中提供的默認值。一旦我將這些配置和@autoconfiguration標籤添加到我的服務主應用程序類,一切都開始工作。

相關問題