当前位置: 代码迷 >> 综合 >> springcloud 项目启动报错@Value引入问题处理java.lang.IllegalArgumentException: Could not resolve placeholder...
  详细解决方案

springcloud 项目启动报错@Value引入问题处理java.lang.IllegalArgumentException: Could not resolve placeholder...

热度:74   发布时间:2023-12-16 05:52:03.0

问题描述:

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;
}

正常启动两个服务!

这个问题也搞了很久,记录于此方便大家快速定位解决问题。

  相关解决方案