如何在春天使用@Value从本地获取环境变量?

时间:2017-11-10 19:31:06

标签: java spring kotlin environment-variables

我在我的环境(在bash_profile文件中)设置了一个名为' FLAG'(值为' true')的密钥。我试图通过使用注释值来获得他的价值。 到目前为止,我试图这样做:

@Value("\${FLAG}")
 private lateinit var process_flag: String

但没有成功,我收到了错误:

java.lang.IllegalArgumentException: Could not resolve placeholder 'FLAG' in string value "${FLAG}"

*我应该在类中添加任何import \ annotation吗?

4 个答案:

答案 0 :(得分:1)

如果未定义变量,请尝试提供默认值:

@Value("${some_property:default_value}")
private String key;

否则,只要未定义some_property,您就会收到异常。

如果这不起作用,您也可以尝试:

@Component
public class SomeClass {

    @Value("#{environment.SOME_KEY_PROPERTY}")
    private String key;

    ....
}

答案 1 :(得分:0)

Spring无法看到bash_profile文件中的内容,而是可以访问Jvm系统属性。请尝试以下:

java .... -DFLAG = $ {FLAG}

" DFLAG"是jvm系统属性和"标志"是bash_profile文件中的值。

答案 2 :(得分:0)

对于自定义源位置,请尝试将此注释添加到配置中:

#!/usr/bin/env zsh

pause() read -s -k "?$*"$'\n'

while true; do
    echo "print something"
    pause "pause"
done

答案 3 :(得分:0)

解决方案:也许这听起来很有趣,但对我来说,解决方案是关闭intellij,当然是在宣布环境变量之后。