SpringCloud Alibaba组件的配置过程
简介
Spring Cloud Alibaba是阿里巴巴结合自身的微服务实践开源的微服务全家桶,我个人觉得其组件比Spring Cloud 中的组件更加好用和强大。并且对的Spring Cloud组件做了很好的兼容。比如在Spirng Cloud Alibaba中依然可以使用Feign作为服务调用方式,使用Eureak做服务注册发现等等。
Nacos的注册和发现
1.引入nacos的相关依赖
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
2.在nacos的bin目录下打开cmd,输入startup.cmd -m standalone启动nacos
3.在src/main/resoure/application.yml文件配置nacos的地址
spring:
cloud:
nacos:
discovery:
server-addr: 127.0.0.1:8848
application:
name: gulimall-coupon
4.在启动器上配置注解@EnableDiscoveryClient
nacos做配置中心
1.添加依赖
<!--nacos配置中心-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
2.在bootstrap.properties文件中配置
spring.application.name=gulimall-coupon
spring.cloud.nacos.config.server-addr=127.0.0.1:8848
3.在nacos配置中心中配置gulimall-coupon.properties
配置Data ID :gulimall-coupon.properties,默认规则
配置内容
coupon.user.name=zhangshan
coupon.user.age=20
4.在调用代码的地方CouponController,使用@Value(“${配置项名字}”)的形式取出值
@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);
}
5.在CouponController类上添加@RefreshScope,能够随获取时刷新配置内容。
如果配置中心和当前应用有相同的配置项,优先使用配置中心的配置
细节:
(1).命名空间:配置隔离
默认:public(保留空间),默认新增的所有配置都在public空间
1)、开发、测试、生成,利用命名空间来做隔离
注意:在bootstr.properties 里面配置命名空间的名字确定使用的是哪个空间
spring.cloud.nacos.config.namespace=06f5ef39-82d9-46c7-ad0b-7555333f7a45
2)、每个微服务之间相互隔离配置,每个微服务都创建自己的命名空间,只加载自己命名空间下的配置
(2)、配置集:所有配置的集合
(3)、配置集ID:类似文件名
Data ID:类似文件名
(4)、配置分组:
所有的配置集都属于DEFAULT_GROUP
可以分组:1111,1212,618
在项目中使用微服务创建自己的命名空间,使用配置分组区分环境,dev,test,pro。
gateway作网关
1.开启服务注册发现
(1)、添加 @EnableDiscoveryClient
(2)、配置naocs的配置文件
在application.properties中配置
spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848
spring.application.name= gulimall-gateway
server.port=88
在bootst.properties中配置
spring.application.name=gulimall-gateway
spring.cloud.nacos.config.server-addr=127.0.0.1:8848
spring.cloud.nacos.config.namespace=2d88f048-9b79-403f-8753-94295094eed8
2.引入依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-gateway</artifactId>
</dependency>
3.配置断言
spring:
cloud:
gateway:
routes:
- id: test_route
uri: https://www.baidu.com
predicates:
- Query=url, baidu
- id: qq_route
uri: https://www.qq.com
predicates:
- Query=url, qq
配置openfeign
1、引入依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
2、为方法配置远程调用接口
@FeignClient("gulimall-coupon")
public interface CouponFeginService {
@RequestMapping("coupon/coupon/member/list")
public R memberCoupons();
}
3、注入
@Resource
CouponFeginService couponFeignService;
4、本地方法的调用
@RequestMapping("/coupons")
public R test(){
MemberEntity memberEntity = new MemberEntity();
memberEntity.setNickname("张三");
R memberCoupons = couponFeignService.memberCoupons();
return R.ok().put("member", memberEntity).put("coupons", memberCoupons.get("coupons"));
}