Nacos(阿里巴巴开源项目)是一个动态服务发现、配置管理和服务管理平台。它的配置中心功能允许您以中心化、外部化和动态化的方式管理所有环境的应用配置和服务配置。让我们一起探讨一下 Nacos 作为配置中心的基本用法:
版本说明
SpringBoot:2.6.13
SpringAlibabaCloud:2021.0.5.0
Nacos:2.2.0
在项目中使用Nacos配置中心,需要进行以下步骤:
1. 引入Nacos客户端依赖
在项目的pom.xml文件中添加Nacos客户端的依赖,可以使用以下Maven坐标:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.6.13</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.example</groupId>
<artifactId>demo</artifactId>
<version>1.0-SNAPSHOT</version>
<name>demo</name>
<description>demo</description>
<properties>
<java.version>17</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
<version>2021.0.5.0</version>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
<version>2021.0.5.0</version>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
<version>3.0.0</version>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bootstrap</artifactId>
<version>3.0.1</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
2. 配置Nacos服务器地址
在项目的resource目录中新建文件bootstrap.yml,添加Nacos服务器的地址相关配置:
spring:
application:
name: test
cloud:
nacos:
discovery:
enabled: true
#改成自己的nacos地址
server-addr: 127.0.0.1:8848
register-enabled: true
#用户名和密码
username: nacos
password: nacos
#命名空间
namespace: public
group: DEFAULT_GROUP
ephemeral: true
weight: 100
config:
server-addr: ${spring.cloud.nacos.discovery.server-addr}
username: ${spring.cloud.nacos.discovery.username}
password: ${spring.cloud.nacos.discovery.password}
file-extension: yaml
group: DEFAULT_GROUP
context-path: /nacos
server:
port: 8080
这里的地址是Nacos服务器的IP地址和端口号。
3. 创建配置文件
在Nacos控制台上创建配置文件,可以使用Nacos提供的Web界面或者API进行创建
打开Nacos提供的Web界面:
创建配置
4. 在项目中使用配置
demo中添加
package com.example.demo;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
// 当前类下的配置支持动态更新
@RefreshScope
@RequestMapping("/api/config")
public class TestController {
@Value("${config.name:null}")
String name;
@GetMapping("/name")
public String cs() {
return name;
}
}
package com.example.demo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.openfeign.EnableFeignClients;
import org.springframework.context.ConfigurableApplicationContext;
import java.util.concurrent.TimeUnit;
@SpringBootApplication
// 服务注册发现
@EnableDiscoveryClient
//开启 OpenFeign 功能
@EnableFeignClients
public class AdminApplication {
public static void main(String[] args) throws InterruptedException {
ConfigurableApplicationContext applicationContext = SpringApplication.run(AdminApplication.class, args);
while (true) {
String name = applicationContext.getEnvironment().getProperty("config.name");
String post = applicationContext.getEnvironment().getProperty("server.port");
System.out.println("name :"+name);
System.out.println("post :"+post);
// 每一秒加载一次,查询注册中心配置是否变更
TimeUnit.SECONDS.sleep(2);
}
}
}
5. 启动项目
启动项目后,Nacos客户端将会从Nacos服务器获取配置并将其注入到对应的属性中。
通过以上步骤,您就可以在项目中使用Nacos配置中心了。可以根据需要动态修改配置,Nacos客户端会自动获取最新的配置并更新到项目中。