写在开头,此部分博客为记录自学项目中学习过程整理,并非详细技术点研究。
参考文档
关于Nacos
Nacos Config Example
Nacos Discovery Example
SpringCloud Alibaba - Nacos
注册中心(服务发现、注册)
-
引入
nacos-discovery
依赖<dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> </dependency>
-
下载nacos-server ,解压后启动:
startup.cmd
-
服务启动类application添加
@EnableDiscoveryClient
注解@MapperScan(value = "com.bcxtm.gulimall.product.dao") @EnableDiscoveryClient @SpringBootApplication public class GulimallProductApplication { public static void main(String[] args) { SpringApplication.run(GulimallProductApplication.class, args); } }
-
配置文件配置服务注册服务器及服务名称
spring: cloud: nacos: discovery: server-addr: 127.0.0.1:8848 application: name: gulimall-product
-
启动服务,浏览器访问
127.0.0.1:8848
,登录nacos,查看服务注册信息。(用户名密码默认为:nacos)
配置中心(动态配置管理) -
引入
nacos-config
依赖<dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId> </dependency>
-
创建
/resource/bootstrap.properties
配置文件,配置 Nacos Config 元数据spring.application.name=gulimall-coupon spring.cloud.nacos.config.server-addr=127.0.0.1:8848
-
通过nacos配置中心添加配置
需要注意,引入依赖后,服务启动时会在console打印默认的配置规则
c.a.c.n.c.NacosPropertySourceBuilder : Ignore the empty nacos configuration and get it based on dataId[gulimall-coupon.properties] & group[DEFAULT_GROUP]
可以发现:默认规则为:gulimall-coupon.properties;组别为:DEFAULT_GROUP
在nacos配置中心->配置管理->配置列表,添加配置:
-
在
resource/application.properties
中添加userName
及userAge
数据。userName=BCXTM userAge=24
-
完成上述两步后,应用会从 Nacos Config 中获取相应的配置,并添加在 Spring Environment 的 PropertySources 中。这里我们使用
@Value
注解来将对应的配置注入到 Controller 的userName
和userAge
字段,并添加@RefreshScope
打开动态刷新功能。@RestController @RefreshScope @RequestMapping("coupon/coupon") public class CouponController { @Value("${userName}") private String userName; @Value("${userAge}") private String userAge; @RequestMapping(value = "/test") public R test() { return new R().put("userName", userName).put("userAge", userAge); } }
-
启动项目,使用
postman
发送请求查看返回结果{ "msg": "success", "code": 0, "userName": "Bcxtm", "userAge": "24" }
-
在
nacos
配置中心中修改配置信息,并点击确认发布
-
再次请求接口,查看结果
{ "msg": "success", "code": 0, "userName": "bcxtm666", "userAge": "24666" }
-
在服务console上可以看到,刷新了配置中的这两个数据
o.s.c.e.event.RefreshEventListener : Refresh keys changed: [userName, userAge]