【发布时间】:2020-01-06 06:10:35
【问题描述】:
我知道System.getenv(/**vName**/) 获取附加了 vName 变量的环境属性,但我很好奇我们是否也可以使用下面的方法来达到相同的结果?
@Autowired
private Environment environment;
environment.getProperty(/**vName**/);
有区别吗?我们什么时候应该使用哪一个?
代码正在运行
@Autowired
private Environment env; <---**I am not sure how this env is getting used?**
@Value("${someURLVriable}")
String APIURLTest;
@Bean(name = "restTemplate")
public RestTemplate restTemplate(RestTemplateBuilder builder) {
String env = System.getenv("environment");<--**eclipse giving warning here.**
String baseURL = System.getenv("illustrationAPIURL");
if (baseURL == null) {/** If baseURL comes null i.e it must be on local/test Env **/
baseURL = APIURLTest;
env = "DEV";
}
log.info("Environment loaded : {}.", env);
log.info("loaded apiURL : {}.", baseURL);
return builder.rootUri(baseURL).build();
}
【问题讨论】:
-
你好像少了一个弹簧相关的标签
-
你指向@Bean 吗?帮我找到丢失的部分:)
-
我不知道你是否可以在 Spring-boot 中自动装配环境,但你可以使用
@Value-annotation。或者我最喜欢的:useproperties- oryml-file in conjunction with environment varialbes and default values -
你也不应该使用。 比@Turing85 的建议更好,使用
@ConfigurationProperties。 -
@chrylis-onstrike- 我同意浅层次结构。但是,如果您有更深的层次结构,例如,这会让人难以嘲笑。