英文:
Inject system environment variable into Spring Annotation with placeholder
问题
我知道您可以使用 @Value
注解来注入环境变量,就像这样:
@Value("#{systemEnvironment['AWS_ENV']}")
private String envTarget;
但是,如果我正在使用 Spring 注解,是否可以将环境变量内联注入到字符串值中呢?例如像这样:
@PropertySource("classpath:secrets-${systemEnvironment['AWS_ENV']}.properties")
显然,上面的方法不起作用,因为它尝试将 systemEnvironment['AWS_ENV']
解析为 JVM 属性。有没有人有任何想法呢?
英文:
I know you can inject environment variables with the @Value
annotation like this
@Value("#{systemEnvironment['AWS_ENV']}")
private String envTarget;
If I am using a Spring annotation however can I inject the environment variable in-line into the String value? For example something like this:
@PropertySource("classpath:secrets-${#{systemEnvironment['AWS_ENV']}.properties")
Obviously the above doesn't work as it tries to resolve systemEnvironment['AWS_ENV']
as a jvm property. Anyone have any ideas?
答案1
得分: 0
以下是翻译好的内容:
占位符可以移动到单独的 aws.properties 文件中:
aws.properties
envTarget = ${AWS_ENV}
然后:
@PropertySource("classpath:aws.properties")
对于本地开发,可以将占位符作为 JVM 参数添加到运行配置中,但这可能会变得很麻烦。另一种选择是拥有一个 aws-local.properties 文件(位于相同的资源文件夹中),但是该文件在 .gitignore 中,因此不会提交秘密信息。然后只需使用单个 JVM 参数来使用本地配置文件。
英文:
The placeholder could be moved to a single aws.properties file:
aws.properties
envTarget = ${AWS_ENV}
then:
@PropertySource("classpath:aws.properties")
For local development, the placeholder can be added as JVM parameters in the run configuration, but that can become a pain to manage. An alternative would be to have a aws-local.properties (located in same resources folder), but this file is in .gitignore so secrets are never committed. Then there is a single JVM parameter to use the local profile.
答案2
得分: 0
虽然被接受的回答在一定程度上解决了我的问题,但我最终还是选择手动配置属性,而不使用PropertySource注解。这使我能够更好地控制bean的生命周期和要加载的属性文件。
链接:https://stackoverflow.com/questions/14416005/spring-environment-property-source-configuration
英文:
While the accepted answer did partially solve my problem I ended up just manually configuring the Properties without using the PropertySource annotation. This allowed me to have better control over the bean lifecycles and the property file to load.
https://stackoverflow.com/questions/14416005/spring-environment-property-source-configuration
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论