我在config / yaml文件中配置了许多秘密。有一个引起麻烦的秘密。我只想打印出该秘密注入了什么价值。
apiVersion: v1
kind: ConfigMap
metadata:
name: myapplication-config
data:
config.yaml: |
'mysecret1': ${DB_PASSWORD}
'mysecret2': ${ANOTHER_SECRET}
当我的应用程序全部启动时,我有一个控制器,在该控制器上发出GET请求,然后尝试打印出秘密:
@Autowired
Environment env;
@GetMapping("/test")
public String print(){
System.out.println(env.getProperty("mysecret2"));
}
我有意在控制器中进行了检查,因此应用程序已完全启动并运行,并且已设置并解决了所有依赖项,等等。
当我打印它时,它会引发错误:
原因:java.lang.IllegalArgumentException:无法解析值“ $ {mysecret2}”中的占位符“ mysecret2” 在org.springframework.util.PropertyPlaceholderHelper.parseStringValue(PropertyPlaceholderHelper.java:172)
有什么想法可以检查config / env / dev / config.yaml中应用程序中发送的秘密吗?
答案 0 :(得分:1)
我能够通过环境变量读取它们:
@Autowired
private org.springframework.core.env.Environment env;
//inside some method
@GetMapping("/test")
public String print(){
System.out.println(env.getProperty("mysecret2"));
}
我尝试使用下面的方法,但这没用。
@Value("${mysecret2})
private String mySecret2; //didn't work
....
System.getEnv("mySecret2"); //didn't work
System.getProperty("mySecret2"); //didn't work