在Spring Boot中使用系统变量

时间:2018-06-29 08:21:39

标签: java spring macos spring-boot

我在.bash_profile中定义了一个变量,如下所示:

export PROFILE=local

现在,我想在我的Spring Boot应用程序中获取此值,以根据该值加载不同的配置文件。

为此,我使用了@Value注释,但是spring无法解析profile的值:

@Value("${profile}")
private String environment;

我错过了什么?

编辑: 这段代码是从Eclipse中的JUnit测试(作为桌面应用程序发布)启动的

2 个答案:

答案 0 :(得分:0)

您应该在属性文件中添加spring.profiles.active: ENV_NAME。或者,您可以使用-Dspring.profiles.active=ENV_NAME从命令行传递它。

编辑:

您还可以使用Map<String, String> getenv = System.getenv();来获取代码中的所有环境变量。然后,您将可以访问所有环境变量。

答案 1 :(得分:0)

您可以在此类Environment的帮助下完成该任务。

@Autowired
Environment environment;

然后

String profile = ((StandardServletEnvironment) environment).getSystemEnvironment().get("PROFILE").toString();