问题描述:
Caused by: java.lang.IllegalArgumentException: Could not resolve placeholder 'wxopen.appid' in value "${wxopen.appid}"
我的Config配置类:
application.yml:(此处我是配置在nacos里面了)
由于是部署在微服务项目中,单个的服务可以正常启动,但是在启动另外一个服务(这个服务调用了上面的服务)就会启动报错
springboot启动时会检索 @Value 对应配置文件中的key,当该key不存在时就会报:Caused by: java.lang.IllegalArgumentException: Could not resolve placeholder异常,解决方案有两种:
1,设置 @Value 的默认值
1 @Value("${wxopen.appid:default_name}")
2 private String openAppid;
上面代码中,当配置文件中 wxopen.appid key 不存在时,就会使用“default_name”作为默认值,key 与默认值用“:”符号分割。
2,在 Config配置类中设置PropertySourcesPlaceholderConfigurer类的默认属性
// 设置@Value注解取值不到忽略(不报错)
@Bean
public static PropertySourcesPlaceholderConfigurer placeholderConfigurer() {
PropertySourcesPlaceholderConfigurer c = new PropertySourcesPlaceholderConfigurer();
c.setIgnoreUnresolvablePlaceholders(true);
return c;
}
正常启动两个服务!
这个问题也搞了很久,记录于此方便大家快速定位解决问题。