所以我的application.yml应该是这样的:
urls:
login: http://mylogin.url
restInterceptor:
log:
fieldsToHide: {'${urls.login}':'password'}
在我的Java代码中我需要这个:
private Map<String, String> fieldsToHide;
首先,我尝试使用@Value
批注,如下所示:
@Value("${restInterceptor.log.fieldsToHide}")
private Map<String, String> fieldsToHide;
但是失败了。看来您无法从带有@Value
批注的Yaml注入地图,因此我在this question中尝试了该解决方案。
@Service
@EnableConfigurationProperties
@ConfigurationProperties(prefix = "restInterceptor.log")
public class MyClass {
private Map<String, String> fieldsToHide;
然后插入地图,但是键的值为'${urls.login}'
而不是http://mylogin.url
。
如果在{'password':'${urls.login}'}
中以相反的方式在Yaml中配置地图,则会正确注入属性值。
我在做什么错?这有可能吗?