Spring-cloud 学习笔记
2021-03-17 11:17:24 30 举报
AI智能生成
登录查看完整内容
springboot/cloud 学习笔记
作者其他创作
大纲/内容
POM中的SpringCloud依赖
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.0.6.RELEASE</version> </parent> <dependencyManagement> <dependencies> <!-- 导入Spring Cloud的依赖管理 --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>Finchley.SR1</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement>
Spring-Cloud
eureka/zookeeper/consul
eureka
使用步骤
pom依赖
服务端
<dependencies> <!--springboot 整合eureka服务端--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId> </dependency></dependencies>
客户端
<dependencies> <!--springboot 整合eureka客户端--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> </dependency>
启动类注解
@SpringBootApplication@EnableEurekaServer //声明这是一个Eureka服务
@SpringBootApplication//申明这是一个Spring Boot项目@EnableEurekaClient//开启Eureka客户端注解
配置文件
zookeeper
consul
feign
<!--springboot 整合fegnin客户端--><dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-openfeign</artifactId> </dependency>
启动类中提供restTemplate
@Bean @LoadBalanced public RestTemplate restTemplate() { return new RestTemplate(new OkHttp3ClientHttpRequestFactory()); //return new RestTemplate(); }
@SpringBootApplication//申明这是一个Spring Boot项目@EnableHystrix//开启断路器@EnableEurekaClient//开启Eureka客户端注解@EnableFeignClients(basePackages =\"site.redstone.order.feign\")
编写远程调用的服务本地接口类
public interface ItemFeignClient { /** * 这里定义了类似于SpringMVC用法的方法,就可以进行RESTful方式的调用了 * @param id * @return */ @RequestMapping(value = \"/item/{id}\
在上一步的接口类上打上注解
@FeignClient(value = \"service-item\
ribbon
restTemplate注解
@LoadBalanced
zuul
<!--整合网关zuul--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-zuul</artifactId> </dependency>
@EnableZuulProxy@SpringBootApplication@ComponentScan(basePackages = \"site.redstone.gateway.filter\") //扫描网关的过滤器包
编写过滤器(可选)
@Componentpublic class UserLoginFilter extends ZuulFilter { /** * filterType:返回字符串代表过滤器的类型 * a)pre:请求在被路由之前执行 * b)routing:在路由请求时调用 * c)post:在routing和error过滤器之后调用 * d)error:处理请求时发生错误调用 * @return */ @Override public String filterType() { return \"pre\"; } /** * 通过返回的int值来定义过滤器的执行顺序,数字越小优先级越高。 * @return */ @Override public int filterOrder() { return 0; } /** *是否启动此过滤器 * @return */ @Override public boolean shouldFilter() { return true; } @Override public Object run() throws ZuulException { RequestContext requestContext = RequestContext.getCurrentContext(); HttpServletRequest request = requestContext.getRequest(); String token = request.getParameter(\"token\"); if(StringUtils.isEmpty(token)){ requestContext.setSendZuulResponse(false); // 过滤该请求,不对其进行路由 requestContext.setResponseStatusCode(401); // 设置响应状态码 requestContext.setResponseBody(\" please login first!!\"); // 设置响应状态码 return null; } return null; }}
路由规则
server: port: 8087 #服务端口spring: application: name: app-zuul-gateway #指定服务名zuul: routes: #定义服务转发规则 item-service: #item-service这个名字是任意写的 path: /service-item/** #匹配item-service的请求app-item服务 #url: http://127.0.0.1:8081 #真正的微服务地址 serviceid: service-item order-service: #名字尽量和业务系统相关 path: /service-order/** #匹配order-service的请求app-order服务 serviceid: service-order
eureka配置(可选)
application.yml/propertioes
config
<!--整合配置中心--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-config-server</artifactId> </dependency>
<!--spring cloud config--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-config-client</artifactId> </dependency>
<!--引入actuator实现配置文件的动态更新--><dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency>
无
server: port: 7788 #服务端口spring: application: name: service-config #指定服务名 cloud: config: server: git: #配置git仓库地址 uri: https://gitee.com/redstone_hgw/spring-cloud-config.git search-paths: - service-item\t\t#配置文件目录地址 username: xxxxxxxxx@163.com#码云账号(公有项目不需要设置) password: xxxxxxxxx \t#码云密码(公有项目不需要设置) label: master\t#分支名称
application.yml
bootstrap.yml
准备需要远程获取的配置
https://gitee.com/redstone_hgw/spring-cloud-config/raw/master/service-item/config-dev.properties
gitee地址
user.username=redstoneuser.password=honggaoweiuser.realname=redstoneuser.age=26user.welcome=welcome to spring cloud!
配置类注解
在需要获取的字段上使用@Value(\"${xxx}\")注解配置类也需要加上@Component注解加入到IOC的控制范围eg:@Value(\"${user.username}\
配置刷新
hystrix
<!--整合hystrix--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-hystrix</artifactId> </dependency>
@SpringBootApplication//申明这是一个Spring Boot项目@EnableHystrix//开启断路器@EnableEurekaClient//开启Eureka客户端注解@EnableFeignClients(basePackages =\"site.redstone.order.feign\")@ComponentScan(basePackages = {\"site.redstone.order.controller\
服务注册中心
http请求调用框架
负载均衡
网关
配置中心
断路器
收藏
收藏
0 条评论
回复 删除
下一页