SpringCloud集成nacos配置中心

SpringCloud集成nacos配置中心

  • 一、环境配置
    • 1.1 环境版本
    • 1.2 核心maven引入
  • 二、使用步骤
    • 2.1. 添加配置文件
    • 2.2. 项目配置
    • 2.3 项目代码测试
    • 2.4. 测试
  • 三. 遇到的问题


一、环境配置

1.1 环境版本

  1. JDK:1.8
  2. spring boot:2.2.6.RELEASE
  3. spring cloud:Hoxton.SR1
  4. spring cloud starter alibaba nacos config:2.2.6.RELEASE
  5. nacos:1.3.0

1.2 核心maven引入

		<!-- SpringCloud Ailibaba Nacos Config -->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

二、使用步骤

2.1. 添加配置文件

进入 nacos 控制台添加所需的配置文件:
SpringCloud集成nacos配置中心_第1张图片
其中的 Data ID本例就使用:nacos-config-dev.yaml
SpringCloud集成nacos配置中心_第2张图片

2.2. 项目配置

bootstrap.yml 配置文件的编写:

server:
  port: 8000

spring:
  application:
    name: nacos-config-demo
  profiles:
    active: dev #开发环境,这里是dev
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848 #配置Nacos地址
      config:
        server-addr: localhost:8848 #Nacos作为配置中心地址
        file-extension: yaml # 文件后缀名
        name: nacos-config-dev # 配置文件名

配置解释:
spring.cloud.nacos.discovery.server-addr: 配置nacos的服务地址,本例使用的是本地启动的单机nacos
spring.cloud.nacos.config.server-addr: 配置nacos配置中心的地址
spring.cloud.nacos.config.file-extension: 配置文件的后缀名称
spring.cloud.nacos.config.name: 指定配置文件名称

2.3 项目代码测试

我们编写一个接口来获取nacos配置的内容进行测试:

@RestController
@RefreshScope //该注解使当前类下的配置支持Nacos的动态刷新功能。
public class OrderController {

    @Value("${user.id}")
    public String id;

    @Value("${user.name}")
    public String name;

    @GetMapping(value = "/nacos/config")
    public String getOrder() {
        return "用户id:" + id + ",用户name:" + name;
    }
}

2.4. 测试

启动项目,访问地址:http://localhost:8000/nacos/config
如果可以正确响应内容:用户id:123,用户name:test 就说明配置成功了!


三. 遇到的问题

这个异常通常是因为Spring无法解析某个占位符导致的。出现这种情况可能是以下原因之一:

  1. 属性文件中没有定义该占位符:检查属性文件中是否存在该占位符,如果不存在,需要在属性文件中添加相应的配置。
  2. 属性名拼写错误:检查占位符的名称是否正确。可能会发生拼写错误或大小写不匹配等问题。
  3. 属性值格式不正确:检查占位符的值是否正确。例如,如果占位符的值应为整数,则必须将其转换为int类型。
  4. 占位符使用方式错误:检查占位符的使用方式是否正确。如果使用@Value注解注入属性,则需要按照正确的语法格式进行使用,例如@Value("${propertyName}")

要排查这个异常,可以按照以下步骤操作:

  1. 检查属性文件:检查属性文件中是否存在该占位符,并确保占位符的名称和值正确。
  2. 检查注入方式:检查占位符的注入方式是否正确,例如是通过@Value注解还是通过Environment对象获取等。
  3. 打印日志:在代码中添加打印日志的语句,以便更好地定位问题。可以使用logback或log4j等日志框架输出相关信息。
    通过以上步骤,可以帮助您更好地定位并解决Could not resolve placeholder这个异常。

对于本例而言一开始遗漏了 name: nacos-config-dev # 配置文件名 这句配置,导致启动一直报错:IllegalArgumentException: Could not resolve placeholder

你可能感兴趣的:(spring,cloud,spring,java)