Nacos配置中心找不到配置中心的值以及ServerName is illegal

SpringCloud2020版新特新

		<dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-bootstrap</artifactId>
        </dependency>

Nacos官网配置中心所要求的Data Id格式

${spring.application.name}-${spring.profile.active}.${spring.cloud.nacos.config.file-extension}

POM文件

 	<dependencies>
        <!--nacos-config-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
        </dependency>
        <!--nacos-discovery-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>
        <!--web + actuator-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
        <!--一般基础配置-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>runtime</scope>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

明确一点bootstrap的读取优先级是高于application的
bootst.yaml

# nacos配置
server:
  port: 3377

spring:
  application:
    name: nacos-config-client
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848 #Nacos服务注册中心地址
      config:
        server-addr: localhost:8848 #Nacos作为配置中心地址
        file-extension: yaml #指定yaml格式的配置

application.yaml

spring:
  profiles:
    active: dev  #表示开发环境

根据官网给出的配置中心的配置文件来看结合application跟bootstrap两个配文件

${spring.application.name}-${spring.profile.active}.${spring.cloud.nacos.config.file-extension}
//就等价于
nacos-config-client-dev.yaml

在在Nacos中配置一个配置文件
而Data ID就需要根据上面的nacos-config-client-dev.yaml来进行配置
(注意,目前仅支持yaml和properties,但不支持yml,虽然yaml跟yml都一样,但是这两个是文件的后缀名,所以是不一样的)
在这里插入图片描述
在这里插入图片描述

主启动类

@EnableDiscoveryClient
@SpringBootApplication
public class ConfigClientMain3377 {
    public static void main(String[] args) {
        SpringApplication.run(ConfigClientMain3377.class,args);
    }
}

Controller

@RestController
@RefreshScope           //支持Nacos的动态刷新功能
public class ConfigClientController {
        @Value("${config.info}")
        private String configInfo;

        @GetMapping("/config/info")
        public String getConfigInfo(){
            return configInfo;
        }

启动程序,控制台打印错误
第一个错误

java.lang.IllegalArgumentException: Param 'serviceName' is illegal, serviceName is blank

很明显就是说serviceName的名字为空

第二个错误

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'scopedTarget.configClientController': Injection of autowired dependencies failed; nested exception is java.lang.IllegalArgumentException: Could not resolve placeholder 'config.info' in value "${config.info}"

这个错误的意思就是说,${config.info}没有这个值

这是为什么呢?
我们来尝试解决第一个问题服务名不能为空
而serviceName的默认名称就是spring.application.name
而spring.application.name我们明明配置了
在这里插入图片描述
第二个问题找不到值,但是我们在nacos配置中心配置的相应的配置
但为什么又没有值呢?
这时我们就需要想起springcloud2020版的新特性
bootstrap的优先级比application高,那么是不是因为bootstrap这个配置文件没有被解析到呢?所以我们在pom文件中加上一个新的坐标

 		<dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-bootstrap</artifactId>
        </dependency>

让bootstrap被解析到
重启服务在这里插入图片描述
无任何报错
说明bootstrap文件被解析到
访问我们的controller中的GetMapper地址
在这里插入图片描述
在于我们在nacos中的配置进行比较
在这里插入图片描述
发现两个配置一直,成功

2021我们将变得更好,共勉

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值