如何在Spring Boot中为类级别注释@PropertySource提取OS环境变量?

时间:2019-03-14 15:52:03

标签: java spring-boot

我需要在字符串值中使用ENV变量,然后将其提供给@PropertySource类级别注释。但这不起作用,按原样传递String值:

    @Configuration
    @PropertySource(value = "./#{systemEnvironment['SERVICE_ENVIRONMENT']}/${spring.profiles.active}.properties")

    public class ApplicationSecretProperties {
                  ...
        }

此外,许多答案建议使用System.getenv("SERVICE_ENVIRONMENT"),因为在编译时会发生以下错误:

The value for annotation attribute PropertySource.value must be a constant expression

1 个答案:

答案 0 :(得分:0)

不确定SpEL对于该注释有效(JavaDoc不会以一种或另一种方式说)。但是OS environment已经为您绑定到Spring环境中。您是否尝试过:

Mar 14 16:47:13 vserv plesk_saslauthd[21227]: failed mail authenticatication attempt for user 'admin@******.***' (password len=8)

您可能还想使用@PropertySource(value = "file:./${SERVICE_ENVIRONMENT}/${spring.profiles.active}.properties") 前缀来明确说明如何查找文件。