Spring
文章平均质量分 81
summer_west_fish
本科毕业深圳大学,拥有Java开发10年的经验。 拥有Devops、敏捷和项目管理多年的经验,并且获得PMP、ACP和DOP等相关证书。
展开
-
Spring AbstractApplicationContext
AbstractApplicationContext 是Spring IOC 容器中核心类,对父类,接口提供了具体实现,其中的方法非常丰富,在这里我们主要介绍其中的核心方法 refresh()。 这里简单说下为什么是 refresh(),而不是 init() 这种名字的方法。因为 ApplicationContext 建立起来以后,其实我们是可以通过调用 refresh() 这个方法重建的,这样会将原来的 ApplicationContext 销毁,然后再重新执行一次初始化操作。从AbstractAp原创 2022-07-07 11:35:41 · 291 阅读 · 0 评论 -
OAuth2.0实现单点登录的原理
单点登录,英文是 Single Sign On,缩写为 SSO。多个站点(192.168.1.20X)共用一台认证授权服务器(192.168.1.110,用户数据库和认证授权模块共用)。为了直观的理解 OAuth2.0 原理流程,我们假设这样一个生活场景:(1) 档案局A(客户端 / Client):以“档案局ID/密码”标识,是掌握档案资源的机构。并列还有很多档案局B/C/…,每个档案局存储的档案内容(资源 / Resource)不一样,比如政治、经济、军事、文化等;(2) 公民张三(资源所有者 / Re原创 2022-06-06 15:01:27 · 2938 阅读 · 0 评论 -
自定义OAuth2协议授权模式
OAuth 2.0 是一个关于授权的开放的网络协议,是目前最流行的授权机制。数据的所有者告诉系统,同意授权第三方应用进入系统,获取这些数据。系统从而产生一个短期的进入令牌(token),用来代替密码,供第三方应用使用。由于授权的场景众多,OAuth 2.0 协议定义了获取牌的四种授权方式,四种授权模式分别使用不同的 grant_type 来区分。分别是:虽然 OAuth2 协议定义了4种标准的授权模式,但是在实际开发过程中还是远远满足不了各种变态的业务场景,需要我们去扩展。而常见的做法都是通过增加 过滤器F原创 2022-06-06 10:48:50 · 3550 阅读 · 4 评论 -
SpringCloudOAuth2-基于Redis管理Session
一、SessionRepositoryRequestWrapper重点看一下重写的getSession方法,代码如下:@Overridepublic HttpSessionWrapper getSession(boolean create) { //1、从本地缓存中获取 HttpSessionWrapper currentSession = getCurrentSession(); if (currentSession != null) { return.原创 2022-05-30 17:42:01 · 1228 阅读 · 0 评论 -
SpringCould Gateway统计在线人数
方案:利用Redis中zset数据类型进行在线人数统计Redis中zset数据类型有如下优点:Redis 有序集合和集合一样也是 string 类型元素的集合,且不允许重复的成员。 不同的是每个元素都会关联一个 double 类型的分数。redis 正是通过分数来为集合中的成员进行从小到大的排序。 有序集合的成员是唯一的,但分数(score)却可以重复。 集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1)。 集合中最大的成员数为 2^32- 1 (4294967295, 每.原创 2022-05-24 17:13:39 · 1093 阅读 · 2 评论 -
SpringCloud Gateway实现灰度
什么是灰度发布?灰度发布(又名金丝雀发布)是指在黑与白之间,能够平滑过渡的一种发布方式。在其上可以进行A/B testing,即让一部分用户继续用产品特性A,一部分用户开始用产品特性B,如果用户对B没有什么反对意见,那么逐步扩大范围,把所有用户都迁移到B上面来。灰度发布可以保证整体系统的稳定,在初始灰度的时候就可以发现、调整问题,以保证其影响度。...原创 2022-01-19 15:41:39 · 3267 阅读 · 0 评论 -
SpringGateway集成Spring OAuth2
Gateway网关配置- id: oauth uri: lb://oauth-server predicates: - Path=/oauth/** filters: - StripPrefix=0 - PreserveHostHeader经过K8s+Docker环境实测,PreserveHostHeader必须设置, 否则Spring OAuth转发之后的响应中Location的中的域名采用的是IP+PortStripPrefix=0Stri原创 2021-12-17 09:59:19 · 974 阅读 · 0 评论 -
Spring Cloud Ribbon 原理
一、负载均衡概念负载均衡的两个基本点: 选择哪个服务器来处理客户端请求。 将客户端请求转发出去。 核心原理:通过硬件或软件的方式维护一个服务列表清单。当用户发送请求时,会将请求发送给负载均衡器,然后根据负载均衡算法从可用的服务列表中选出一台服务器的地址,将请求进行转发,完成负载功能。负载均衡的特性高性能:可根据不同的分配规则自动将流量进行分摊。可扩展性:可以很方便增加集群中设备或链路的数量。高可靠性:系统中某个设备或链路发生故障,不会导致服务中断。易配置性转载 2021-12-09 10:25:36 · 389 阅读 · 0 评论 -
Spring Retryable使用心得
一、背景在调用第三方接口或者使用MQ时,会出现网络抖动,连接超时等网络异常,所以需要重试。为了使处理更加健壮并且不太容易出现故障,后续的尝试操作,有时候会帮助失败的操作最后执行成功。一般情况下,需要我们自行实现重试机制,一般是在业务代码中加入一层循环,如果失败后,再尝试重试,但是这样实现并不优雅。在SpringBoot中,已经实现了相关的能力,通过@Retryable注解可以实现我们想要的结果。二、引入依赖<dependency> <groupId>org.sp原创 2021-12-03 16:26:25 · 570 阅读 · 0 评论 -
Spring Bean实例化
在此之前,我们就必须先知道什么是ioc,ioc叫做控制反转,也可以称为依赖注入(DI),实际上依赖注入是ioc的另一种说法,1.谁控制谁?:在以前,对象的创建和销毁都是由用户控制的,用了ioc之后,对象的创建和销毁就都交给容器来控制了,用户就不用管这些,只关注业务需求就好了;2.什么是反转?:既然叫反转,肯定就有正转,正转其实就是对象去找实例,而反转就反过来了嘛,让实例来找对象;怎么找呢?当然是通过容器啦!3.谁依赖谁?:在spring项目中,将对象理解为Bean,也可以叫b..转载 2021-09-03 09:57:25 · 225 阅读 · 0 评论 -
Spring Cloud Feign原理
Spring Cloud Feign原理原创 2020-12-26 16:26:11 · 237 阅读 · 1 评论 -
Spring Transaction
Spring Transaction@EnableTransactionManagementAutoProxyRegistrarProxyTransactionManagementConfiguration给容器中注册事务增强器transactionAdvisor@EnableTransactionManagement利用TransactionManagementConfigurationSelector给容器中会导入组件AutoProxyRegistrarProxyTransactionMana原创 2020-11-18 16:00:07 · 255 阅读 · 0 评论 -
Spring Bean实例化源码分析
这里写目录标题一级目录二级目录三级目录一级目录二级目录三级目录原创 2020-11-16 16:09:57 · 273 阅读 · 0 评论 -
Spring ApplicationContext
Spring ApplicationContextApplicationContext体系ApplicationContext 与 BeanFactory的区别ApplicationContext体系ApplicationContext 与 BeanFactory的区别原创 2020-11-16 11:26:08 · 153 阅读 · 0 评论 -
Spring IOC BeanDefinition
BeanDefinition解析过程缓存使用解析过程缓存使用原创 2020-11-16 11:21:53 · 129 阅读 · 0 评论 -
Spring BeanFactory
这里写目录标题体系结构图四级接口继承体系总结继承关系的2个抽象类和2个实现类:定义这么多层次的接口的原因体系结构图这是BeanFactory基本的类体系结构,这里没有包括强大的ApplicationContext体系。四级接口继承体系BeanFactory 作为一个主接口不继承任何接口,暂且称为一级接口。AutowireCapableBeanFactory、HierarchicalBeanFactory、ListableBeanFactory 3个子接口继承了它,进行功能上的增强。这3个子接原创 2020-11-09 16:44:09 · 157 阅读 · 0 评论 -
AOP与AspectJ的关系
AOP与AspectJ的关系AspectJ简介两者关系引用关系织入(Weaving)依赖代理模式aspectj静态代理jdk动态代理cglib的动态代理AspectJ简介AspectJ是java编程语言的无缝的面向方面的扩展,一整套完整的切面增强解决方案,包含自己的语法,编译器,最终可以在java代码的字节码中植入切面代码。AspectJ 是静态代理的增强,所谓的静态代理就是 AOP 框架会在编译阶段生成 AOP 代理类,因此也称为编译时增强。AspectJ 是 Java 语言的一个 AOP 实现,原创 2020-10-27 10:14:24 · 1561 阅读 · 0 评论 -
Spring Context
Spring Context缓存有三级缓存有三级/** Cache of singleton objects: bean name to bean instance. */private final Map<String, Object> singletonObjects = new ConcurrentHashMap<>(256);/** Cache of early singleton objects: bean name to bean instance. */pr原创 2020-10-27 10:34:08 · 142 阅读 · 0 评论