<?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.3.11.RELEASE</version>
<relativePath/>
</parent>
<groupId>com.x</groupId>
<artifactId>spring-cloud-alibaba-root</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>pom</packaging>
<properties>
<java.version>1.8</java.version>
<spring.cloud.version>Hoxton.SR8</spring.cloud.version>
<spring.cloud.alibaba.version>2.2.5.RELEASE</spring.cloud.alibaba.version>
</properties>
<modules>
<module>spring-cloud-nacos</module>
</modules>
<dependencyManagement>
<dependencies>
<!--Spring Cloud的版本管理-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring.cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!--Spring Cloud Alibaba的版本管理-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>${spring.cloud.alibaba.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<build>
</build>
</project>
1. 引入依赖
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
2.新建bootstrap.properties
在使用Nacos作为配置中心时,推荐在
bootstrap.properties
或bootstrap.yml
中配置Nacos相关信息,而不是在application.properties
或application.yml
中,原因主要涉及Spring Boot的启动过程和配置加载顺序:
1.早于主应用加载:
bootstrap.properties
或bootstrap.yml
会在application.properties
或application.yml
之前被加载。这意味着Nacos客户端的配置信息可以在应用的主配置被处理之前就被初始化,包括获取远程配置的能力。这样,应用在启动时就能使用从Nacos配置中心获取的配置,而非本地静态配置,实现了配置的动态性和灵活性。
2.配置优先级:
bootstrap
配置的优先级高于application
配置,这保证了从Nacos加载的配置可以覆盖本地默认配置,满足了外部化配置的需求,即运行时的配置能够覆盖编译时的配置。
3. 配置如下:
spring:
cloud:
nacos:
config:
server-addr: 192.168.11.99:8848
# 如果你不指定这个name,默认使用的是spring.application.name。
# 如果你指定,就按你配置的名称作为DataId去找。
name: DataId名称
# 如果你不指定分组,默认使用DEFAULT_GROUP这个组。
# 如果你指定了,就按你配置的这个group去找,一般我们不去配置这么细。
group: group1
# 如果不配置,使用的就是默认命名空间`public`。
# 如果你配置,就使用你配置的命名空间去查找。主要用在业务或者环境的逻辑区分
namespace: test
4.通过 Spring Cloud 原生注解@RefreshScope 实现配置自动更新
@RestController
@RequestMapping("/config")
@RefreshScope
public class ConfigController {
@Value("${boy.name:潘周聃}")
private String name;
@RequestMapping("/get")
public String get() {
return this.name;
}
}