我知道您可以使用@Value注解注入环境变量,如下所示
@Value("#{systemEnvironment['AWS_ENV']}")
private String envTarget;但是,如果我使用的是Spring注解,我可以将环境变量内联注入字符串值吗?例如,如下所示:
@PropertySource("classpath:secrets-${#{systemEnvironment['AWS_ENV']}.properties")显然,上面的方法不起作用,因为它试图将systemEnvironment['AWS_ENV']解析为jvm属性。有谁有什么想法吗?
发布于 2020-08-25 20:10:06
可以将占位符移动到单个aws.properties文件中:
aws.properties
envTarget = ${AWS_ENV}然后:
@PropertySource("classpath:aws.properties")对于本地开发,可以将占位符作为JVM参数添加到运行配置中,但这可能会成为一种难以管理的问题。另一种方法是使用aws-local.properties (位于相同的资源文件夹中),但此文件位于.gitignore中,因此永远不会提交机密。然后有一个单独的JVM参数来使用本地profile。
发布于 2020-08-27 23:20:22
虽然被接受的答案确实部分解决了我的问题,但我最终只是手动配置了属性,而没有使用PropertySource注释。这使我能够更好地控制bean生命周期和要加载的属性文件。
https://stackoverflow.com/questions/63578349
复制相似问题