[英]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中。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.