阿里的Nacos作为注册中心、配置中心整合Spring Cloud
#系统配置环境#
首先说明我的系统配置环境:
- 电脑系统:windows10
- JDK版本:1.8
- Nacos服务版本:1.2.1
- SpringBoot版本:2.2.6.RELEASE
- SpringCloud版本:Hoxton.SR3
一、Nacos的核心功能:
- Nacos核心提供两个功能:服务注册与发现,动态配置管理。
二、Win10下Nacos的安装
2.1 下载Nacos
首先,我们得去下载nacos:https://github.com/alibaba/nacos/releases,
或者直接下载和我一样的nacos 1.2.1版本:https://github.com/alibaba/nacos/releases/download/1.2.1/nacos-server-1.2.1.zip
windows10系统的话,选择zip版本下载解压之后就好了。
2.2 启动Nacos
下载解压好之后,我们就可以启动nacos了
在解压出来的文件夹下的路径:xxx\nacos-server-1.2.1\nacos\bin,在bin的文件夹下,会有一个startup.cmd
和shutdown.cmd
,启动nacos双击startup.cmd
,会出来一个cmd终端:
上边个Port:8848
,这便是nacos服务启动时所用的端口,这个是需要我们配置的地方。
2.3 访问Nacos
启动Nacos之后,我们可以访问Nacos查看服务:
- 访问地址:http://127.0.0.1:8848/nacos/
- 默认用户:nacos
- 默认密码:nacos
三、Nacos作为注册中心
3.1 配置注册中心依赖包:
在SpringBoot项目下的pom.xml配置依赖包
<!--服务注册发现-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
3.2 注解服务发现
在SpringBoot启动程序上使用可发现注解
@EnableDiscoveryClient
例如:
@EnableDiscoveryClient
@SpringBootApplication
public class GulimallCouponApplication {
public static void main(String[] args) {
SpringApplication.run(GulimallCouponApplication.class, args);
}
}
3.3 Nacos的相关配置
在项目下的yml文件中配置nacos相关服务
spring:
cloud:
#注册中心
nacos:
discovery:
server-addr: 127.0.0.1:8848
application:
name: gulimall-coupon
3.4 启动项目
配置完之后,启动GulimallCouponApplication
,然后去Nacos服务地址查看:http://127.0.0.1:8848/nacos/;
启动之后,便可以在nacos中看见gulimall-coupon在注册中心的服务列表了。
四、Nacos作为配置中心
4.1 配置 配置中心依赖包
在SpringBoot项目下的pom.xml配置依赖包
<!--配置中心来做配置管理-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
4.2 创建bootstrap.properties
配置文件
在项目的resource目录下,创建一个bootstrap.properties
配置文件
配置内容:
spring.application.name=gulimall-coupon
spring.cloud.nacos.config.server-addr=127.0.0.1:8848
注意:
- spring.application.name与上面的配置的一致
- spring.cloud.nacos.config.server-addr是nacos的服务地址
4.3 添加数据集
需要给配置中心默认添加一个叫做数据集(Data Id):gulimall-coupon.properties。
- 默认规则:应用名.properties
在nacos服务中添加Data Id:
- 服务地址:http://127.0.0.1:8848/nacos/
点击右上角的:**+**添加Data Id:gulimall-coupon.properties
例如:
配置内容为:
coupon.user.name=zhangsan2id
coupon.user.age=18010
在给应用名.properties添加任何配置之后,项目就可以去配置中心动态获取项目的相关配置了。
4.4 添加动态获取并刷新配置
在项目下的controller的类下使用注解:
// 获取配置数据从配置中心动态获取
@RefreshScope
例:
// 获取配置数据从配置中心动态获取
@RefreshScope
@RestController
@RequestMapping("coupon/coupon")
public class CouponController {
@Autowired
private CouponService couponService;
private static String name;
@Value("${coupon.user.name}")
private void setName(String name){
this.name = name;
}
private static Integer age;
@Value("${coupon.user.age}")
private void setAge(Integer age){
this.age = age;
}
@RequestMapping("/test2")
private String test2(){
Map<String, Object> map = new HashMap<>();
map.put("name",name);
map.put("age",age);
return map.toString();
}
访问:http://localhost:7000/coupon/coupon/test2,便可以获取到配置中心gulimall-coupon.properties
配置中的配置内容:
通过测试,可以看见,我们在配置中心的配置项有效,
动态获取示例:
修改配置中心gulimall-coupon.properties
配置项的值:
配置内容为:
coupon.user.name=coupon-prop
coupon.user.age=0000
再次访问:http://localhost:7000/coupon/coupon/test2
可以发现,配置的值也动态改变了。
以上、Nacos的注册中心和配置中心简单整合SpringCloud完成。