一、服务配置中心
1 配置中心
- 服务注册中心和配置中心都是nacos,如下为常见参数
namespace: 区分部署环境,默认为public,可以自定义prod,uat,development等,互相隔离
在项目中要用naocos控制台生成的uuid随机数
group: 区分不同的功能模块,默认为DEFAULT_GROUP,可自定义如crm,btob,msm
dataId: 具体的配置文件名称,
一般格式为{spring.application.name}-{spring.profile.active}.yaml
2 Client Server
<!--web模块,这两个一般绑定在一起-->
<!--引入nacos,一般都是注册中心和配置中心一起-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
// 主启动类
@EnableDiscoveryClient
2.1 配置文件
bootstrap.yaml
# 如下的内容必须放在bootstrap.yaml中
spring:
profiles:
active: prod
application:
name: erick-consumer
cloud:
nacos:
discovery:
server-addr: 60.205.229.31:9001 # 服务注册的Nacos地址,不用写http
namespace: f8117703-ca23-43f4-a4bf-f1395f377008 # 服务注册时候的命名空间
group: nike # 服务注册时候的分组
config:
server-addr: 60.205.229.31:9001 # 注册中心
namespace: f8117703-ca23-43f4-a4bf-f1395f377008 # 命名空间的uuid
file-extension: yaml
prefix: ${spring.application.name} # 配置文件前缀,
# 配置文件格式:erick-consumer-prod.yaml
group: nike
application.yaml
server:
port: 9001
management:
endpoints:
web:
exposure:
include: '*'
spring:
profiles: prod
测试类
- 在需要动态刷新的class或者bean上,添加@RefreshScope ,达到实时刷新的效果
import org.springframework.cloud.context.config.annotation.RefreshScope;
@RestController
@RequestMapping("/config")
@RefreshScope // 动态刷新
public class InfoController {
@Value("${name}")
private String name;
@Value("${password}")
private String password;
@GetMapping("/info")
public String getInfo() {
return name + password;
}
}