spring cloud day02
目标
- spring cloud openfeign的使用
- spring cloud gateway 的使用
- 了解配置中心spring cloud config
1 Spring cloud openfegin
feign 是一个[声明式]REST客户端。(http客户端:RestTemplate 使用Restful 风格进行开发的)
feign 是基于RestTemplate开发的一个声明式的Rest客户端;只需要写一个接口,定义一个注解,就可以直接使用。
2.使用feign
1.添加起步依赖
2.启用Enablkefeignclients
3.编写一个接口 添加一个注解进行声明
4.直接使用(注入接口),在controller service dao里面都可以使用。
5.被调用方controller 一定要【实现】声明的接口的方法。
3.集成hystrinx:
1.开启feign 和hystrinx的集成
2.实现feign接口 实现类中的方法就是兜底的方法
3.在feign接口上指定实现类 即可
4 网关的定义
网关 是用来解决在开发过程的一些问题(跨域,安全,授权,日志,端口不统一等)的组件。 网关本身也是一个微服务/软件。
实现网关的技术有:
+ nginx
+ spring cloud zuul
+ spring cloud gateway
spring cloud gateway 核心功能:
路由: 将请求转发
断言: 请求转发的条件
过滤: 对请求进行过滤操作
使用:
+ 1 搭建独立的springboot工程
+ 2 添加起步依赖
+ 3 启动类
+ 4 配置yml
5用到过滤器
自定义的过滤器
+ 全局的过滤器 (一定要掌握)
+ 局部的过滤器(了解)
框架自带的过滤器
+ 全局过滤器 了解 也要根据需求来选择
+ 局部过滤器 掌握(常用的几个)
需求:
全局上,要求 用户登录之后才有资格 来访问所有的微服务。
所有的微服务 都需要进行校验 ,比较麻烦,在网关系统中统一做全局的处理。有业务逻辑存在,现有的框架自带的过滤器不满足需求了,需要自定义全局过滤器:
http://localhost:18084/abc/user/1?token=123456
逻辑 就是:当参数有token 并值为123456 就认为用户已经登录了。
实现自定义全局过滤器:
1.写一个类 交给spring容器管理 并实现接口GlobalFilter Ordered 接口
2.类中的方法 需要实现自定义的逻辑判断
了解:局部过滤器:
1创建类 要求 一定以GatewayFilterFactory结尾 MyParamGatewayFilterFactory
2.交给spring容器
3.在yml中直接配置使用
6 配置中心
解决的问题:
统一配置管理 及时生效 不需要重启 权限控制 灰度发布。
解决问题的技术:
1. spring cloud config + github/gitee + mq +eureka 进行搭建 (很麻烦)spring cloud 官方的
2. apollo 提供界面 起步依赖搭建一个工程就可以使用了。功能丰富
3. nacos() 提供界面,搭建一个nacos服务单就可以了。!
4. disconfig
...
1.起步依赖 2.注解 3配置