
Spring系列
文章平均质量分 96
本专栏介绍Spring/SpringMVC/SpringBoot/SpringCloud相关的内容,包含使用方式、原理、应用等
Ewen Seong
trouble and chance comes together
展开
-
Spring系列-5 事件机制
本文介绍Spring的事件机制,包括使用方式、注意事项以及实现原理,重心在于介绍事件机制的实现原理。原创 2022-12-11 15:51:50 · 5356 阅读 · 0 评论 -
Spring系列-10 事务机制
ORM框架是连接代码和数据库的桥梁,Spring作为基础框架提供了Spring Data JPA,也提供了适配其他ORM框架的能力,如集成Mybatis和Hibernate等。需要注意ORM框架提供的事务能力依赖于数据库事务,是对数据库事务的一层封装;如果底层数据库不支持事务(如Mysql的MyISAM引擎),在此之上的所有数据库或者DAO操作都无事务特性。Spring事务提供了两种使用方式:声明式 和编程式。原创 2023-06-04 19:11:37 · 3231 阅读 · 0 评论 -
Spring系列-2 Bean的生命周期
作为Spring系列的第二篇,本文结合容器的启动流程介绍**单例Bean的生命周期**,包括Bean对象的创建、属性设置、初始化、使用、销毁等阶段;在此过程中会介绍Spring用于操作Bean或者BeanDefinition的相关扩展接口。文章重心在于介绍整个Bean生命周期,不拘泥于每个阶段的细节。原创 2023-02-19 19:28:13 · 3336 阅读 · 0 评论 -
Spring系列-4 循环依赖与三级缓存
本文承接Spring系列-3 Bean实例化与依赖注入,继续介绍依赖注入相关内容,内容包括循环依赖和三级缓存。原创 2023-02-12 21:26:10 · 4766 阅读 · 0 评论 -
Spring系列-3 Bean实例化与依赖注入
Spring管理着Bean对象的生命周期,包括实例化、属性设置、初始化、销毁等;其中实例化和属性设置过程中存在着依赖注入。本文承接上文 [Spring系列-2 Bean的生命周期](https://blog.youkuaiyun.com/Sheng_Q?type=blog),重点介绍Bean生命周期中的实例化与依赖注入过程,介绍原理时会结合Spring源码进行。原创 2023-01-25 16:32:41 · 5152 阅读 · 0 评论 -
SpringMVC系列-7 @CrossOrigin注解与跨域问题
理解同源策略是理解跨域的前提。同源策略定义如下: 在同一来源的页面和脚本之间进行数据交互时,浏览器会默认允许操作,而不会造成跨站脚本攻击;不同源之间进行限制。不同源之间形成跨域,包括:协议、域名、端口。http和https,localhost和127.0.0.1也会形成跨域(即使经过域名解析后相同)。由于浏览器引擎实现了同源策略,即对跨域访问进行了限制,因此存在跨域问题。原创 2023-11-25 22:20:06 · 6087 阅读 · 0 评论 -
SpringBoot系列-2 自动装配
Spring提供了IOC机制,基于此我们可以通过XML或者注解配置,将三方件注册到IOC中。问题是每个三方件都需要经过手动导入依赖、配置属性、注册IOC,比较繁琐。基于"约定优于配置"原则的自动装配机制为该问题提供了一个解决方案。原创 2023-11-12 16:22:03 · 2824 阅读 · 0 评论 -
SpringBoot系列-1启动流程
本文作为SpringBoot系列的开篇,介绍SpringBoot的启动流程,包括Spring容器和Tomcat启动过程。SpringBoot作为流行的微服务框架,其是基于约定和自动装配机制对Spring的封装和增强。原创 2023-11-05 16:23:59 · 2702 阅读 · 0 评论 -
SpringMVC系列-6 异常处理器
本文作为的第六篇,介绍SpringMVC的异常处理器。内容包括异常处理器的使用方式、实现原理和内置异常处理器的装配过程。原创 2023-10-29 11:34:17 · 2590 阅读 · 0 评论 -
SpringMVC系列-5 消息转换器
SpringMVC系列的第五篇介绍消息转换器,本文讨论的消息转换指代调用Controller接口后,对结果进行转换处理的过程。内容包括介绍自定义消息转换器、SpringMVC常见的消息转换器、Spring消息转换器工作原理等三部分。原创 2023-10-22 18:37:49 · 3850 阅读 · 0 评论 -
SpringMVC系列-4 参数解析器
本文作为SpringMVC系列的第四篇,介绍参数解析器。本文讨论的参数解析表示从HTTP消息中解析出JAVA对象或流对象并传参给Controller接口的过程。本文内容包括介绍参数解析器工作原理、常见的参数解析器、自定义参数解析器等三部分。其中,原理部分会结合源码进行说明。原创 2023-10-06 20:44:19 · 3554 阅读 · 0 评论 -
SpringMVC系列-3 拦截器
}HandlerInterceptor中的声明的preHandle/postHandle/afterCompletion为default类型的接口,可以随意选择是否实现。preHandle接口若返回false, 会跳过Controller方法的执行,流程可参考SpringMVC系列-2 HTTP请求调用链。原创 2023-06-24 21:34:40 · 3275 阅读 · 0 评论 -
SpringMVC系列-2 HTTP请求调用链
本文作为第二篇,介绍HTTP请求的调用链:从请求进入Tomcat到数据流返回客户端的完整过程。为了尽可能把流程表达清楚,进行了很多减支处理,只关注主线逻辑。本文也作为SpringMVC系列后续文章的基础,在调用链梳理清楚的基础上,后文对重要逻辑分别进行展开介绍,如拦截器、异常处理器、转换器、消息转换器、异步请求、文件上传等。在这些文章完成后,会出一个专题,包括:结果集框架、错误码框架、鉴权逻辑、分页查询、事件框架等,基于此会对Spring系列和SpringMVC系列文章有更深层次的理解。原创 2023-06-22 16:43:05 · 3278 阅读 · 0 评论 -
SpringMVC系列-1 使用方式和启动流程
当Tomcat被部署到服务器或者通过本地IDEA将项目war包通过local tomcat部署到Tomcat上后,可以通过startup.sh或者startup.bat触发Bootstrap的main方法,从而开启Tomcat容器组件的初始化和启动过程。从宏观上看,启动过程中对应着Listener-> Filter -> Servlet组件的触发流程。本文涉及的组件包括Listener和Servlet:Tomcat在构造Context实例后会触发ServletContextEvent事件原创 2023-06-18 23:56:02 · 5990 阅读 · 0 评论 -
LocalDateTime的序列化和反序列化
最近定位出一个LocalDateTime序列化相关的问题,简单记录一下。本文重点介绍Jackson对LocalDateTime的序列化和反序列化,并结合Spring应用场景进行介绍。原创 2024-07-30 21:41:18 · 1298 阅读 · 0 评论 -
Spring系列-1 启动流程
BeanFactory提供了IOC相关的能力,称为IOC容器;SpringApplication作为BeanFactory的子类,在其基础上提供了事件机制、国际化、资源处理等功能,称为Spring上下文或者Spring容器。SpringApplication的核心实现在AbstractSpringApplication类中,Spring启动流程也是在该类的refresh()方法中完成。AbstractSpringApplication类在内部维持了一个BeanFactory对象(默认为DefaultLis原创 2023-06-11 15:56:02 · 6526 阅读 · 0 评论 -
Spring系列-9 Async注解使用与原理
本文作为[Spring系列]的第九篇,介绍@Async注解的使用、注意事项和实现原理,原理部分会结合Spring框架代码进行。@Async一般注解在方法上,用于实现方法的异步:方法调用者立即返回。原创 2023-02-26 17:42:17 · 7526 阅读 · 0 评论 -
Spring系列-8 AOP使用与原理
按照软件重构的思想,当多个类中存在相同的代码时,需要提取公共部分来消除代码坏味道。Java的继承机制允许用户在纵向上通过提取公共方法或者公共部分(模版方法方式)至父类中以消除代码重复问题;日志、访问控制、性能监测等重复的非业务代码揉杂在业务代码之中无法横向抽取,AOP技术为其提供了一个解决方案。AOP技术将这些重复的非业务代码抽取出为一个模块,通过技术整合还原代码的逻辑和功能;即:在代码层面上消除了重复度,提高了可维护性,并在功能层面上得到还原。抽取重复代码作为一个模块是用户的问题,然而技术整合(对目标织入原创 2023-03-05 22:07:36 · 2961 阅读 · 0 评论 -
Spring系列-6 占位符使用和原理
分离变化和不变是软件设计的一个原则,将不变的部分形成模版,将变化的部分抽出为配置文件;不同的环境使用不同的配置文件,方便维护且不需要重新编译代码;Spring框架引入占位符为其提供了一个解决方案。本文作为Spring系列文章的第六篇,内容包含占位符的使用和背后原理;其中,原理部分会伴随着Spring源码进行。原创 2022-12-25 13:54:59 · 7772 阅读 · 0 评论 -
Spring系列-7 国际化
为了提高软件的通用性(应对不同的语言环境)、扩大软件的业务受众范围,软件被要求具备处理国际化的能力。Java和Spring为此分别提供了不同层次的解决方案:Java在java.util包中提供了支持国际化能力的API与工具类,Spring基于此进行封装并提供了容器级别的接口。本文作为**Spring系列**文章的第四篇,内容包含JDK、Spring、Spring Boot国际化相关的API的使用和背后原理;其中,基于Spring框架介绍国际化的使用和原理是本文的重点内容,该部分会伴随着Spring源码进行原创 2022-12-18 19:03:52 · 6038 阅读 · 0 评论 -
事务-2 Spring与Mybatis事务实现原理
本文承接[事务-1 事务隔离级别和Spring事务传播机制是事务专题的第二篇;主题内容是Mybatis和Spring事务原理,结合源码和案例进行介绍。原创 2022-09-25 18:20:01 · 6846 阅读 · 0 评论 -
事务-1 事务隔离级别和Spring事务传播机制
本文介绍事务的基础篇:包括事务的概念和性质、MySql的隔离级别、Spring事务传播机制等,本文偏向于实践操作。原创 2022-09-11 23:34:05 · 5012 阅读 · 0 评论