1.先启动nacos注册中心,将服务注册进nocos,这里将不再阐述。
2.在模块下新建bootstrap.properties
coupon.user.name=test
coupon.user.age=18
3.在Controller层新建测试方法,并将 bootstrap.properties的配置信息属性注入
@RestController
@RequestMapping("coupon/coupon")
public class CouponController {
@Autowired
private CouponService couponService;
@Value("${coupon.user.name}")
private String name;
@Value("${coupon.user.age}")
private Integer age;
@RequestMapping("/test")
public R test(){
return R.ok().put("name",name).put("age",age);
}
}
此时我们访问这个控制器可以看到:
那我们假如有十台机器,每次修改配置文件都需要修改,然后重启机器?
nacos配置中心的使用
1.导入nacos配置中心的依赖
<!--nacos配置中心-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
<version>2.2.5.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bootstrap</artifactId>
<version>3.1.1</version>
</dependency>
最好加上spring-cloud-starter-bootstrap这个依赖,不然新版本可能会报错
2.在application.yml加上配置
spring:
datasource:
username: root
password: root
url: jdbc:mysql://xxx.xx.xxx.x:3306/gulimall_sms?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&useSSL=false
driver-class-name: com.mysql.cj.jdbc.Driver
application:
name: gulimall-coupon
cloud:
nacos:
discovery:
server-addr: 127.0.0.1:8848
config:
server-addr: 127.0.0.1:8848
mybatis-plus:
mapper-locations: classpath*:/mapper/**/*.xml
global-config:
db-config:
id-type: auto
server:
port: 7000
spring.cloud.nacos.config.server-addr=127.0.0.1:8848 为nacos配置中心的地址
3.进入nacos控制台新建配置
Data ID格式:
应用名-环境名.文件后缀
prefix−{spring.profile.active}.${file-extension}
prefix 默认为 spring.application.name 的值,也可以通过配置项 spring.cloud.nacos.config.prefix来配置。
spring.profile.active 即为当前环境对应的 profile。 注意:当 spring.profile.active 为空时,对应的连接符 - 也将不存在,dataId 的拼接格式变成 p r e f i x . {prefix}.prefix.{file-extension}。
file-exetension 为配置内容的数据格式,可以通过配置项 spring.cloud.nacos.config.file-extension来配置。目前只支持 properties 和 yaml 类型。
配置格式要与你需要热更新的配置文件格式保持一致
5.在Controller增加注解
@RefreshScope
@RestController
@RequestMapping("member/member")
public class MemberController {
@Autowired
private MemberService memberService;
@Autowired
private CouponFeignService couponFeignService;
@RequestMapping("/coupons")
public R test(){
MemberEntity memberEntity = new MemberEntity();
memberEntity.setNickname("test");
R r = couponFeignService.memberCoupon();
return R.ok().put("member",memberEntity).put("coupons",r.get("coupons"));
}
}
@RefreshScope 这个注解是实现配置文件实时生效的关键
6.测试
1.在nacos配置列表中找到我们刚刚新建的配置并修改配置 、发布
2.访问localhost:7000/coupon/coupon/test