![](/img/trans.png)
[英]How to access Environment Variable from AWS in my spring boot application
[英]How to get OS environment variable from Spring Boot?
我是java和spring框架的新手。 我的問題是如何將 OS(ubuntu) 環境變量注入 spring boot bean。 我試過的:
@Configuration
@EnableWebMvc
public class CorsConfig implements WebMvcConfigurer {
@Value("${COMPONENT_PARAM_CORS}")
private String COMPONENT_PARAM_CORS;
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/"+COMPONENT_PARAM_CORS);
}
}
導出 COMPONENT_PARAM_CORS=**
打印環境
告訴我它存在,但是當我嘗試 mvn clean install 時:發生錯誤
java.lang.IllegalStateException: Failed to load ApplicationContext
Caused by: org.springframework.beans.factory.BeanCreationException: Error
creating bean with name 'corsConfig': Injection of autowired dependencies
failed; nested exception is java.lang.IllegalArgumentException: Could not
resolve placeholder 'COMPONENT_PARAM_CORS' in value "${COMPONENT_PARAM_CORS}"
Caused by: java.lang.IllegalArgumentException: Could not resolve placeholder
'COMPONENT_PARAM_CORS' in value "${COMPONENT_PARAM_CORS}"
然后我的單元測試也下降了(我試圖搜索這個錯誤,但所有主題都是舊的並且使用來自 application.properties 的參數,但我需要使用 env var 而不是 application.properties)
您可以使用System.getenv(<environment name>)
方法來檢索環境變量值。 喜歡:
registry.addMapping("/" + System.getenv("COMPONENT_PARAM_CORS"));
或使用默認值:
registry.addMapping("/" + System.getenv().getOrDefault("COMPONENT_PARAM_CORS", "DEFAULT_VALUE"))
這里有更多信息https://docs.oracle.com/javase/tutorial/essential/environment/env.html
如果你真的想注入變量值,你可以將代碼修改為:
@Value("#{systemEnvironment['COMPONENT_PARAM_CORS'] ?: 'DEFAULT_VALUE'}")
private String COMPONENT_PARAM_CORS;
您應該使用System.getenv() ,例如:
import java.util.Map;
public class EnvMap {
public static void main (String[] args) {
Map<String, String> env = System.getenv();
for (String envName : env.keySet()) {
System.out.format("%s=%s%n",
envName,
env.get(envName));
}
}
}
@Configuration
@EnableWebMvc
public class CorsConfig implements WebMvcConfigurer {
@Value("#{systemEnvironment['COMPONENT_PARAM_CORS']?:'**'}")
private String COMPONENT_PARAM_CORS;
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/"+COMPONENT_PARAM_CORS);
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.