0、链接上一篇文章:http://www.haijin.xyz/article/767
1、在nacos上新建配置:
2、项目截图:
3、pom文件:
<?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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>nacosProject</artifactId>
<groupId>xyz.haijin</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>cloudalibaba-config-nacos-client3377</artifactId>
<properties>
<maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<!--bootstrap-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bootstrap</artifactId>
</dependency>
<!--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>
<!--lombok-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
4、bootstrap.yml:
# nacos配置
spring:
application:
name: nacos-config-client
cloud:
nacos:
discovery:
server-addr: 192.168.3.10:8848 #配置Nacos地址
username: nacos
password: nacos
config:
server-addr: 192.168.3.10:8848 #配置Nacos地址
username: nacos
password: nacos
file-extension: yaml #指定yaml格式的配置
# group: PROD_GROUP
# namespace: Prod_Namespace
# extension-configs: # 能够加载额外的配置
# - data-id: nacos-config-1.yaml
# refresh: true
# - data-id: nacos-config-2.yaml
# refresh: true
# nacos端配置文件DataId的命名规则是:
# ${spring.application.name}-${spring.profile.active}.${spring.cloud.nacos.config.file-extension}
# 本案例的DataID是:nacos-config-client-dev.yaml
5、application.yml:
server:
port: 3377
spring:
profiles:
active: dev # 表示开发环境
# active: prod # 表示生产环境
# active: test # 表示测试环境
6、NacosConfigClient3377:
package xyz.haijin;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
@SpringBootApplication
@EnableDiscoveryClient
public class NacosConfigClient3377 {
public static void main(String[] args) {
SpringApplication.run(NacosConfigClient3377.class, args);
}
}
7、NacosConfigClientController:
package xyz.haijin.controller;
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.RestController;
@RestController
@RefreshScope //在控制器类加入@RefreshScope注解使当前类下的配置支持Nacos的动态刷新功能。
public class NacosConfigClientController
{
@Value("${config.info}")
private String configInfo;
@GetMapping("/config/info")
public String getConfigInfo() {
return configInfo;
}
}
8、访问:http://localhost:3377/config/info
修改nacos配置之后能够自动更新:
9、命名空间
# nacos配置
spring:
application:
name: nacos-config-client
cloud:
nacos:
discovery:
server-addr: 192.168.3.10:8848 #配置Nacos地址
username: nacos
password: nacos
config:
server-addr: 192.168.3.10:8848 #配置Nacos地址
username: nacos
password: nacos
file-extension: yaml #指定yaml格式的配置
group: PROD_GROUP
namespace: 78e4461a-7f5e-4ce4-a995-1c5238a6976a
# extension-configs: # 能够在家额外的配置
# - data-id: nacos-config-1.yaml
# refresh: true
# - data-id: nacos-config-2.yaml
# refresh: true
# nacos端配置文件DataId的命名规则是:
# ${spring.application.name}-${spring.profile.active}.${spring.cloud.nacos.config.file-extension}
# 本案例的DataID是:nacos-config-client-dev.yaml
使用额外的配置文件:
# nacos配置
spring:
application:
name: nacos-config-client
cloud:
nacos:
discovery:
server-addr: 192.168.3.10:8848 #配置Nacos地址
username: nacos
password: nacos
config:
server-addr: 192.168.3.10:8848 #配置Nacos地址
username: nacos
password: nacos
file-extension: yaml #指定yaml格式的配置
group: PROD_GROUP
namespace: 78e4461a-7f5e-4ce4-a995-1c5238a6976a
extension-configs: # 能够加载额外的配置
- data-id: nacos-config-1.yaml
group: PROD_GROUP
refresh: true
# - data-id: nacos-config-2.yaml
# refresh: true
# nacos端配置文件DataId的命名规则是:
# ${spring.application.name}-${spring.profile.active}.${spring.cloud.nacos.config.file-extension}
# 本案例的DataID是:nacos-config-client-dev.yaml
NacosConfigClientController:
package xyz.haijin.controller;
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.RestController;
@RestController
@RefreshScope //在控制器类加入@RefreshScope注解使当前类下的配置支持Nacos的动态刷新功能。
public class NacosConfigClientController
{
@Value("${config.info}")
private String configInfo;
@Value("${config.info1}")
private String configInfo1;
@GetMapping("/config/info")
public String getConfigInfo() {
return configInfo;
}
@GetMapping("/config/info1")
public String getConfigInfo1() {
return configInfo1;
}
}
2025-02-11 start:
在nacos上配置一些数据并映射到实体类中:
创建实体类:
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;
/**
* @author haijin
* @description: 短信发送接口配置类
* @date 2025/2/11 17:07
*/
@Data
@Configuration
@ConfigurationProperties(prefix = "test")
public class SenderProperties {
/**
* 地址
*/
private String url;
/**
* 用户
*/
private String user;
}
在nacos上配置:
---
test:
url: www.haijin.xyz
user: haijin
"---"这个表示单独开一列
end