![](https://img-blog.csdnimg.cn/20200401100243498.jpeg?x-oss-process=image/resize,m_fixed,h_224,w_224)
Spring
文章平均质量分 86
SpringBoot、SpringCloud学习笔记。
天然玩家
请大家不要再订阅了!!!如遇到专栏里可以解决您问题的文章,您可以私信我。为了保护之前订阅用户的权益,专栏内容依旧保留,但是不会再更新内容了。
展开
-
SpringBoot中如何优雅地使用重试
SpringBoot中使用spring-retry优雅地实现重试,只需在方法上添加重试注解@Retryable,配置相关重试参数即可在指定的异常情况下实现重试,满足业务场景需求。原创 2023-11-26 14:30:22 · 1550 阅读 · 0 评论 -
WebFlux异常处理:onErrorReturn和onErrorResume
WebFlux捕获异常:onErrorReturn和onErrorResume,使用时需要注意异常的包装。原创 2023-09-17 15:37:42 · 1799 阅读 · 0 评论 -
响应式编程理论篇:源码浅析WebClient
通过源码分析WebClient功能:请求接口全流程。原创 2023-06-16 19:12:29 · 1772 阅读 · 0 评论 -
响应式编程实战:Spring WebFlux集成MongoDB和Swagger
响应式编程实战:Spring WebFlux+MongoDB+Swagger。原创 2023-05-28 22:24:36 · 1499 阅读 · 4 评论 -
线上问题:FeignClient循环依赖及源码分析
(1)循环依赖有显式依赖:如A->B->C->A,以及隐式依赖,需要逐步调试;(2)循环依赖的解决方案:断开环,可调整代码设计、延迟加载等方式。原创 2023-04-15 23:25:02 · 1975 阅读 · 2 评论 -
简洁易懂:源码+实战讲解Redisson并发锁及看门狗自动续期
Redisson有看门狗功能,但是,触发是有条件的,不是所有情况都可使用看门狗功能。Redisson的锁是可重入的,lock和try是有区别的。本文将通过源码逐一讲解Redisson相关功能。原创 2023-02-10 19:16:39 · 3973 阅读 · 3 评论 -
实战讲解及分析Spring新建Bean的几种方式以及创建过程(图+文+源码)
(1)新建Bean的三种方式:XML、@Bean和BeanDefinition;(2)创建Bean的核心过程:(2.1)注册BeanDefinition,填充beanDefinitionMap和beanDefinitionNames;(2.2)注册Bean,填充singletonObjects;(3)通过应用上下文获取Bean,是通过singletonObjects查询获取。原创 2022-12-18 14:11:53 · 3777 阅读 · 0 评论 -
实战讲解Spring定时任务:@Scheduled(图+文+源码)
(1)注解@Scheduled标注在方法上实现定时功能;(2)使用注解时必须指定任意一个参数(属性):cron、fixedDelay或fixedRate;(3)注解标识的方法必须时无参方法且无返回值。如果有返回值,返回值会被忽略;(4)有两种方式生效该注解:XML中配置:,或者使用注解:@EnableScheduling;(5)定时任务的相关逻辑在:ScheduledAnnotationBeanPostProcessor。原创 2022-12-11 10:19:41 · 7353 阅读 · 0 评论 -
实战讲解网关接口统一认证SpringCloudGateway(图+文)
- 白名单配置有两种方式,(1)在启动的文件application.yml中配置;(2)在数据库Redis或MySQL中配置,启动应用时,需要将数据加载到内存(JVM),如何在SpringBoot启动时加载外部数据到内存参见:[https://blog.csdn.net/Xin_101/article/details/127945236](https://blog.csdn.net/Xin_101/article/details/127945236);- 网关拦截请求核心是实现GlobalFilte原创 2022-11-21 22:00:00 · 3312 阅读 · 2 评论 -
实战讲解SpringBoot启动时自动加载数据库数据到内存:通过回调方法自动运行Bean(图+文+源码)
(1)SpringBoot启动过程中,通过回调方式执行Bean的两个接口类:ApplicationRunner和CommandLineRunner;(2)ApplicationRunner回调方法可以获取输入的参数,CommandLineRunner中的回调方法使用原生字符串;(3)ApplicationRunner和CommandLineRunner完成加载后才会完成SpringBoot启动,加载空窗期, SpringBoot应用无法对外提供服务。原创 2022-11-20 10:35:00 · 4211 阅读 · 0 评论 -
实战讲解SpringCloud网关接口限流SpringCloudGateway+Redis(图+文)
网关通过动态路由(lb:service-name)方式代理服务时,使限流生效需满足两个条件:(1)断言中配置的路径前缀***不能***与服务名称相同,如代理的服务为producer,断言(predicates)路径中的前缀禁止配置为producer;(2)过滤器(filters)必须配置StripPrefix=1,移除前缀,保证代理的接口可以进行限流;(3)过滤器名称为RequestRateLimiter,Redis约定的名称,不可更改。常用的限流方式有3钟,IP限流、路径限流和参数限流。原创 2022-11-17 12:01:13 · 2631 阅读 · 0 评论 -
实战讲解Spring配置中心Config同步更新配置信息(图+文)
(1)自动同步更新配置中心数据:通过bus-amqp和开放刷新接口实现;(2)Spring配置中心和其他连接到配置中心的服务会各自监听一个队列,同步消息;(3)在配置中心刷新数据,并通过总线方式,同步消息到其他队列,其他服务通过@RefreshScope更新数据。原创 2022-10-31 11:50:51 · 1034 阅读 · 0 评论 -
实践讲解Spring配置中心config(图+文,本地文件方式)
(1)配置中心的作用:为其他客户端提供公用的配置参数;(2)通过注册中心获取配置中心信息。原创 2022-10-29 13:36:14 · 3690 阅读 · 0 评论 -
实战讲解Spring Oauth2.0密码模式和授权码模式(内存inMemory+持久化jdbc配置)
(1)Oauth2.0认证需要配置:认证拦截、认证服务、资源服务以及用户服务,其中,认证拦截是拦截认证相关的URI,如$/oauth/**$系列的URI,$/login/**$系列的URI;认证服务是认证服务器相关的配置信息,如认证方式、token有效期等;资源服务是需要使用oauth2.0进行授权访问的服务;用户服务是自定义的用户校验,可以自定义校验逻辑,如从MySQL查询账户;(2)认证服务的授权方式有四种:密码模式、授权码模式、客户端模式和简化模式,本文实现前两种,即密码模式和授权码模式;原创 2022-10-27 18:12:20 · 5329 阅读 · 9 评论 -
完整版SpringBoot集成Prometheus配置Grafana监控指标包括响应时间分位数TP90,TP80(图+文)
(1)Prometheus/Grafana支持按照接口粒度配置监控,如只监控某个接口的QPS及响应时间等;(2)配置接口响应时间需要配置时间单位,由于接口响应时毫秒级别,并且为了提高可读性,配置的时间单位是秒;(3)配置接口响应状态比例时,使用了数据转换功能,过滤对应的标签属性,如按照status显示数据;(4)接口响应时间分位数统计使用函数:histogram_quantile,可直接配置分位数以及统计的数据;(5)SpringBoot集成Prometheus配置数据统计时,默认不开启histog原创 2022-09-29 16:16:43 · 1948 阅读 · 0 评论 -
实践讲解Skywalking跨语言请求链路追踪(Python+Java)
(1)Skywalking支持多种开发语言后台服务调用链路追踪以及可视化UI系统;(2)Skywalking与服务间通信使用Agent,采集不同语言的后台信息需要配置对应的Agent;(3)Skywalking数据存储支持:H2、MySQL、ElasticSearch等;(4)Skywalking与服务间通信协议有三种方式:gRPC(端口:11800)、HTTP(端口:12800)和Kakfa(端口:9200)。原创 2022-09-23 11:18:24 · 1357 阅读 · 0 评论 -
详解Spring Framework及设计理念
(1)Spring Framework是Java平台。为开发Java应用程序提供全面的基础设施支持,开发者只需专注于应用程序开发,其他的交给Spring。(2)Spring Framework设计理念:可配置、灵活、向后兼容、注重API设计和高质量代码。(3)Spring Framework分为6个模块:Web、Data Access/Integration、AOP、Messaging、Core Container和Test。原创 2022-09-07 09:27:41 · 334 阅读 · 0 评论 -
源码详解Spring请求处理过程
(1)Spring处理请求的入口类为:DispatcherServlet,请求处理入口方法为:doDispatch;(2)请求处理过程:Request->doDispatch->@RequestMapping->@Controller->@Service->ModelAndView->Response;(3)HandlerMapping映射@RequestMapping,HandlerAdapter映射@Controller。原创 2022-09-06 17:47:48 · 347 阅读 · 0 评论 -
再谈微服务负载均衡器:Ribbon均衡器和SpringCloud自带LoadBalancer均衡器
(1)负载均衡器:Ribbon和LoadBalancer,其中,Ribbon是Netflix开发,LoadBalancer是Spring官方的项目;(2)Ribbon均衡器有7中均衡策略,LoadBalancer(3.0.3)有2中均衡策略;(3)Ribbon默认均衡策略为:可用过滤规则;LoadBalancer默认策略为轮询。原创 2022-09-02 12:20:25 · 2462 阅读 · 0 评论 -
实战详解Maven部署(deploy)jar到私有仓库Nexus及如何引入私仓jar包
(1)发布jar包有两种仓库选择:快照版和发行版;(2)快照版多为测试阶段的版本,上传时添加-SNAPSHOT标识,自动将包上传到快照版仓库;(3)发行版正式功能的版本,完成测试,上传时为区别于快照版本,添加-RELEASE后缀,如果只是版本数字号也可以;(4)无论是上传到快照版仓库还是发行版仓库,公共仓库:maven-public都会保留这两者的jar包,供开发者选择;(5)发行版和快照版的groupId和artifactId相同,唯一区别是版本号,其中,快照版的版本号使用时间戳作为后缀标识。..原创 2022-07-22 10:26:04 · 12438 阅读 · 1 评论 -
超详细讲解Hystrix的正确打开方式以及熔断和降级测试(带源码分析)
(1)Hystrix熔断和降级流程:自动装配相关Bean-》数据绑定-》OpenFeign请求服务-》HystrixCommanProperties填充数据-》HystrixCommand初始化-》HystrixExecutable.execute执行回调方法;(2)Hystrix是通过线程隔离的方式进行熔断,执行回调由同步执行和异步执行两种方式;(3)在熔断等待期间,即使被服务重新可用,也不会将请求发送到启动的服务,而是直接调用自身的回调方法,保证及时响应;......原创 2022-07-09 18:27:26 · 1583 阅读 · 0 评论 -
通过源码和实践纠正对@Autowired与@Resource的固有认知
(1)@Resource和@Autowired均是默认通过Bean名称(byName)注入;(2)@Resource和@Autowired均是匹配不到Bean名称时才会自动切换到匹配Bean类型(byType);(3)@Resource和@Autowired注入多个同类型的Bean时需要为某个Bean添加primary=true或者@Primary保证成功注入;(4)不同点:@Resource是Java原生的通用注解,@Autowired是Spring基于JSR-330依赖注入规范的另一种实现,并添原创 2022-06-16 17:46:03 · 220 阅读 · 0 评论 -
详解springboot数据源配置参数(包括Druid)
SpringBoot数据源参数解析:原生参数和Druid参数。Durid的出现,可配置数据源的高级参数,如失败重试、最小/大空闲连接数、空闲连接回收、预编译(PSCache)等,提高性能和稳定性。原创 2022-06-08 16:26:04 · 4886 阅读 · 0 评论 -
SpringCloud2模块系列:SpringbootAdmin(微服务监控)
1 Admin服务端1.0 pom.xml<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/原创 2020-06-19 19:36:01 · 2615 阅读 · 1 评论 -
SpringCloud微服务模块系列:网关Gateway聚合Swagger
1 服务EurekaGatewayUserDataProcess2 Swagger配置2.1 User模块Swagger配置package com.company.msuser.config;import springfox.documentation.service.Contact;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Con原创 2020-12-13 23:08:00 · 1365 阅读 · 0 评论 -
Docker部署的SpringCloud服务:数据库连接异常
o.s.b.a.j.DataSourceHealthIndicator - DataSource health check failedorg.springframework.jdbc.CannotGetJdbcConnectionException: Failed to obtain JDBC Connection; nested exception is com.mysql.cj.jdbc.exceptions.CommunicationsException: Communications link原创 2020-09-13 23:51:48 · 2106 阅读 · 0 评论 -
配置Prometheus采集SpringBoot数据并在Grafana实时监控
要点:- SpringBoot添加actuator和prometheus依赖,actuator暴露监听数据URI,prometheus采集并统计数据;- SpringBoot中配置prometheus数据采集Bean;- Prometheus启动文件中添加监控的后台服务信息,如数据采集间隔、服务IP:PROT等;- Grafana配置:Metrics browser配置监控的指标:包括uri、outcome等等;- Transform配置数据转换:Labels to fields配置图例名称。..原创 2022-06-05 17:26:23 · 3348 阅读 · 0 评论 -
SpringCloud基础系列:简介
1 简介Spring Cloud为开发者提供在分布式系统(如配置管理,服务发现,熔断器,智能路由,微代理,控制总线,一次性令牌,全局锁,领导选举,分布式session,团簇态)中快速建立通用模式项目的工具,分布式系统的协作产生了一些样板模式,即代码量少可以放到系统中直接使用的模板,使用Spring Cloud,开发者可以快速启动使用相同模式服务和应用,在各自的分布环境中可以很好的工作,包括开发者的笔记本,裸机数据中心和云计算等托管平台,Spring Cloud专注于提供更好的开箱即用的机制,1.0 主要原创 2020-07-11 16:34:13 · 180 阅读 · 0 评论 -
源码分析及实践测试OpenFeign负载均衡
(1)SpringCloud:2020.0.3,已经弃用Netflix的Ribbon,使用自有组件spring-cloud-loadbalancer做负载均衡,因此,集成Eureka时需要移除ribbon;(2)spring-cloud-loadbalancer使用默认的负载均衡策略为:随机“轮询”方式,通过随机种子与服务数量取余,选择均衡的服务;(3)消费者无需选择负载均衡策略,OpenFeign启动时,自动装配负载均衡器;(4)spring-cloud-loadbalancer负载均衡有两种:纯原创 2022-05-30 11:27:48 · 1917 阅读 · 0 评论 -
SpringCloud2模块系列:Feign(服务间调用)
1 Feign1.0 功能服务间接口调用.1.2 调用过程场景:服务A调用服务B的接口.实现过程:在服务A中使用Feign配置服务B的应用及路径属性.一句话:在发起调用的服务中,配置被调用服务的信息.1.3 流程图 图1 服务间调用示意图2 Usage2.1 服务A-工单服务2.1.0 启动类启动类中添加注解@EnableFeignClients,打开Feign,服务间进行Http调用.package com.personal.microspersonalworkorder;原创 2020-06-18 16:28:41 · 4001 阅读 · 0 评论 -
SpringCloud2基础系列:新建项目(服务注册与发现)
1 小序SpringCloud以Springboot为web基础搭建微服务项目,包括两部分,一部分是根(父)模块,一部分是服务(子)模块,其中,根项目即最外层项目,服务模块即各个springboot服务.2 搭建微服务2.1 搭建根项目根项目用于管理子服务模块,不需要完整的Springboot项目结构,可直接建立, 目录结构如下:根项目结构├── micros-personal│ └── pom.xmlpom.xml...原创 2020-05-24 18:26:57 · 2583 阅读 · 0 评论 -
如何找到并分析学习SpringBoot启动过程
启动核心步骤:(1)启动计时:StopWatch.start(2)创建BootstrapContext:createBootstrapContext()(3)配置Headless属性:configureHeadlessProperty()(4)获取监听器,由createBootstrapContext()创建:getRunListeners(args)(5)添加监测标识:listeners.starting(bootstrapContext, this.mainApplicationClass),原创 2022-05-23 18:34:49 · 423 阅读 · 0 评论 -
一文搞不懂springboot中redis参数配置
核心:(1)支持的客户端连接方式:直连、集群、哨兵;(2)Redis客户端连接池类型:Jedis和Lettuce;(3)Jedis简单易用的Redis客户端;Lettuce线程安全、异步的高性能Redis客户端;(3)Jedis和Lettuce通用连接池配置:最大空闲连接、最小空闲连接等,通过timeBetweenEvictionRuns控制回收空闲连接的频率;(4)防止获取连接阻塞,必须设置maxWait最大等待时间。......原创 2022-06-07 17:32:55 · 4542 阅读 · 0 评论 -
SpringCloud2模块系列:Gateway(接口转发)
1 流程原创 2020-06-22 19:19:41 · 4117 阅读 · 0 评论 -
一文读不懂BeanPostProcessor源码+实例详解
核心:(1)BeanPostProcessor是hook设计方式,封装监听与取消监听操作,即Bean实例化前和Bean实例化后;(2)执行顺序:Bean初始化前(postProcessorBeforeInitializing)->Bean初始化->Bean初始化后(postProcessorAfterInitializing)。......原创 2022-06-14 12:23:16 · 378 阅读 · 0 评论 -
我的第二部作品:Java微服务
第二部作品,后端领域:Java微服务。原创 2022-05-22 22:54:54 · 276 阅读 · 0 评论 -
如何使用注解ConfigurationProperties映射实例化对象、列表、HashMap
来源于学习rabbitmq、resilience4j和gateway。(1)映射实例化的对象:多一层嵌套,方便集成属性;(2)映射HashMap:HashMap自身集合属性可以存储多key,value,满足多属性配置;(3)映射List:映射实例化对象的扩展,映射对象集合。原创 2022-05-26 11:41:14 · 1994 阅读 · 0 评论 -
Spring MVC样例Demo
1 SpringMVC原创 2019-09-30 18:35:11 · 469 阅读 · 0 评论 -
SSM接口可视化
1 工具swagger下载:https://github.com/swagger-api/swagger-ui2 配置2.1 pom.xml<dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</art...原创 2019-10-27 18:52:28 · 533 阅读 · 0 评论 -
SSM问题总结
1 RequestBody映射类字段失败原因RequestBody不能解析类对应大写字母开头的字段.解决(1)大写字母开头的字段,替换为小写字母头.(2)使用Map类型接收json数据.2 AOP切片失效原因Service注解不能新建对象.解决在xml配置文件中加入bean配置类.<bean id="testDataImpl" class="com.TestDa...原创 2019-10-28 20:26:39 · 378 阅读 · 0 评论