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

问题描述:

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

正常启动两个服务!

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

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值