nacos多配置,用@Value读取yml格式的数据时,读取不到!!!

nacos配置中心:

  • nacos_config配置:
user:
    username: public_default
    password: 24
  • mysql_config配置:
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.ymlapplication.properties中配置自定义的即可解决