1.配置获取流程图
2.单机版客户端搭建
引入依赖
<!--Spring Cloud Alibaba Config 依赖-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
<!--SpringCloud ailibaba nacos 服务注册与发现模块 -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
编写bootstrap.yml配置文件
bootstrap.yml 是系统级别的,加载优先级高于 application.yml ,负责从外部加载配置并解析
management:
endpoints:
web:
exposure:
include: '*' #springboot监控开启所有端点
server:
port: 8083
spring:
application:
name: config-client
cloud:
nacos:
discovery:
server-addr: 127.0.0.1:8848 #服务注册到nacos注册中心的地址
config:
server-addr: 127.0.0.1:8848 #Nacos作为配置中心地址
file-extension: yaml #指定yaml格式的配置
编写application.yml配置文件
可以通过指定不同的激活文件配合Data Id从nacos获取不同环境下的配置
spring:
profiles:
active: dev #激活 dev 的配置
nacos控制台添加配置
Nacos Server 配置的Data ID的完整格式如下:${prefix}-${spring.profiles.active}.${file-extension}
dataId 格式中各参数说明如下:
- ${prefix}:默认取值为微服务的服务名,即配置文件中 spring.application.name 的值,我们可以在配置文件中通过配置 spring.cloud.nacos.config.prefix 来指定。
- ${spring.profiles.active}:表示当前环境对应的 Profile,例如 dev、test、prod 等。当没有指定环境的 Profile 时,其对应的连接符也将不存在, dataId 的格式变成 ${prefix}.${file-extension}。
- ${file-extension}:表示配置内容的数据格式,我们可以在配置文件中通过配置项 spring.cloud.nacos.config.file-extension 来配置,例如 properties 和 yaml。
启动类添加注解
```java import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
@SpringBootApplication @EnableDiscoveryClient public class ConfigClientApplication { public static void main(String[] args) { SpringApplication.run(ConfigClientApplication.class, args); } }
<a name="F2tWZ"></a>
### 编写配置类获取配置
**注意注解@RefreshScope**
```java
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.stereotype.Component;
/**
* @author 冯铁城 [17615007230@163.com]
* @date 2022-05-31 16:20:25
* @describe:
*/
@Component
@ConfigurationProperties(prefix = "config")
@RefreshScope
public class Config {
private String version;
private String name;
public String getVersion() {
return version;
}
public void setVersion(String version) {
this.version = version;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
配置使用
注意注解@RefreshScope
import org.springframework.beans.factory.annotation.Autowired;
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;
/**
* @author 冯铁城 [17615007230@163.com]
* @date 2022-05-31 16:20:19
* @describe:
*/
@RefreshScope
@RestController
@RequestMapping("api/vi/config-client")
public class Controller {
@Autowired
private Config config;
@GetMapping
public String get() {
return "name:" + config.getName() + " | version:" + config.getVersion();
}
}