簡體   English   中英

Spring Boot無法解析OS環境變量?

[英]Spring boot not able to resolve OS environment variable?

我已將Spring Boot Service部署到AWS和application.properties指的是OS環境變量之一,該變量已被設置為部署過程的一部分。 看起來Spring Boot在啟動時無法解析OS環境變量。

如果我回顯該變量,則似乎設置正確-

ubuntu@ip-10-227-74-206:~$ echo $EC2_INSTANCE_ID
i-de8c136d

application.properties文件引用該變量,如下所示-

service.hostId=aws-${EC2_INSTANCE_ID}

啟動應用程序時,我看到以下錯誤-

Caused by: org.springframework.beans.factory.BeanCreationException: Could not autowire field: private java.lang.String com.foo.services.registration.config; nested exception is java.lang.IllegalArgumentException: Could not resolve placeholder 'EC2_INSTANCE_ID' in string value "${EC2_INSTANCE_ID}"
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:573)
    at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:88)
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:331)

知道我做錯了什么嗎? 在application.properties文件中引用時,是否需要添加諸如“ sys:”之類的任何前綴?

花了很多時間之后,感覺就像是在spring-boot中使用init腳本做些事情。 我發現一些不理想的解決方法,但已完成工作-

init conf文件中的源環境變量。

來源/ etc / environment

這使得環境變量能夠作為啟動Spring Boot應用程序的父進程。 現在將所有環境變量作為JAVA_OPTS傳遞到conf文件中

JAVA_OPTS = “ - Denv.variable = $ {} var.foo”

使用@ConfigurationProperties@Value批注將OS var注入到bean中。

參考: 有關外部化配置的Spring Boot文檔

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM