nacos配置中心:
user:
username: public_default
password: 24
user:
age: 33
bootstrap.yml配置:
spring:
application:
name: nacos_config_test
cloud:
nacos:
config:
server-addr: 127.0.0.1:8848
file-extension: yaml
# group: DEFAULT_GROUP
# name: nacos_config
extension-configs:
- dataId: nacos_config
group: DEFAULT_GROUP
refresh: true
- dataId: mysql_config
group: DEFAULT_GROUP
refresh: true
controller:
@RestController
@RequestMapping("/nacos")
@RefreshScope//实时读取最新配置
public class NacosConfigController {
@Value("${user.username}")
private String username;
@Value("${user.password}")
private String password;
@Value("${user.age}")
private String age;
/**
* 获取配置信息
* @return String
*/
@GetMapping("/getConfigInfo")
public String getConfigInfo(){
return username+":"+password+":"+age;
}
}
结果:
Caused by: java.lang.IllegalArgumentException: Could not resolve placeholder 'user.username' in value "${user.username}"
at org.springframework.util.PropertyPlaceholderHelper.parseStringValue(PropertyPlaceholderHelper.java:178) ~[spring-core-5.2.8.RELEASE.jar:5.2.8.RELEASE]
at org.springframework.util.PropertyPlaceholderHelper.replacePlaceholders(PropertyPlaceholderHelper.java:124) ~[spring-core-5.2.8.RELEASE.jar:5.2.8.RELEASE]
问题:单配置可以读取到(被#注释的),多配置时就是读取失败,百度也搜不到类似的问题,自己也试了很多方法,就是读取失败,有没有能能给个解答的=.=
这个问题我也遇到了,排查了两天,最终发现是配置格式的问题,配置文件没有缩进导致读不出来!
没有读取值,说明没有读取到配置文件,你可以断点看一下,nacos是否能够加载到配置文件,加载的配置文件的名称是否和自己在nacos中配置的一样
源码:
NacosPropertySourceLocator类:loadExtConfiguration(composite);方法
使用nacos config,用@Value
读取yml格式的数据时,读取不到的解决方案:
可以在原项目的 application.yml
或 application.properties
中配置自定义的即可解决