<?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;}
}