
Spring
文章平均质量分 96
流华追梦
15年+ IT从业经验,互联网高级算法工程师、Java语言专家、.Net专家、博客专家、阿里云专家、优快云2023博客之星,优快云付费资源项目实践专家,谢谢关注!
展开
-
Spring 事务详解,看这篇就够了!
Spring 事务是指在 Spring 框架中对于数据库操作的一种支持,它通过对一组数据库操作进行整体控制来保证数据的一致性和完整性。Spring 事务可以保证在一组数据库操作执行时,要么所有操作都执行成功,要么所有操作都回滚到之前的状态,从而避免了数据不一致的情况。原创 2024-03-27 07:30:00 · 1485 阅读 · 0 评论 -
Spring 事务七大传播机制 —— REQUIRED、SUPPORTS、MANDATORY、REQUIRES_NEW、NOT_SUPPORTED、NEVER、NESTED
首先简单了解一下 Spring 中事务传播行为是什么?听起来很高端,但是真正用起来的时候,稍有不慎,就会让自己陷入困境之中,所以在使用之前,我们必须要十分耐心认真的学习它。从名字理解起来,事务传播行为,既然为传播就肯定发生在两个实体之间,否则单个实体又如何发生行为呢。通俗点讲就是“一个巴掌拍不响”。下面是定义。事务传播行为主要用来描述由某一个事务传播行为修饰的方法被嵌套进另一个方法的事务中,该事务如何传播。这个概述可能不好理解,换句话就是当一个事务方法被另一个事务方法调用时,这个事务方法应该如何进行。原创 2024-03-14 07:30:00 · 3788 阅读 · 0 评论 -
(二)Spring MVC 实现原理之 DispatcherServlet 的处理请求过程
在上一篇中,我们详细介绍了 DispatcherServlet 的初始化过程。有了前文的铺垫,接下来我们就通过源码来解析理解下DispatcherServlet 处理请求的过程。原创 2024-02-29 07:30:00 · 1374 阅读 · 0 评论 -
(一)Spring MVC 实现原理之 DispatcherServlet 的初始化过程
DispatcherServlet 首先是 Sevlet,Servlet 有自己的生命周期的方法(init、destory 等),那么我们在看 DispatcherServlet 初始化时首先需要看源码中 DispatcherServlet 的类结构设计。首先我们看 DispatcherServlet 的类结构关系,在这个类依赖结构中找到 init() 的方法:很容易找到 init() 的方法,位于中,然后跑《经典怀旧 —— 通过一个代码案例讲解 Spring MVC 的请求流程》原创 2024-02-28 07:30:00 · 1078 阅读 · 0 评论 -
经典怀旧 —— 通过一个代码案例讲解 Spring MVC 的请求流程
前面几篇文章我们介绍了 Spring 框架和 Spring 框架中最为重要的两个技术点:IoC 和 AOP。那我们如何更好的构建上层的应用呢(比如 Web 应用),这便是 Spring MVC。Spring MVC 是Spring 在 Spring Container Core 和 AOP 等技术基础上,遵循上述 Web MVC 的规范推出的 Web开发框架,目的是为了简化 Java 栈的 Web 开发。 本文主要介绍 Spring MVC 主要的流程和基础案例的编写和运行。原创 2024-02-26 07:30:00 · 1575 阅读 · 0 评论 -
Spring AOP 实现原理详解之 CGLIB 动态代理
CGLIB 是一个强大的高性能的代码生成包。它广泛的被许多 AOP 的框架使用,例如 Spring AOP 和 dynaop,为他们提供方法的 interception(拦截)。CGLIB 包的底层是通过使用一个小而快的字节码处理框架 ASM,来转换字节码并生成新的类。除了 CGLIB 包,脚本语言例如 Groovy和 BeanShell,也是使用 ASM 来生成 Java 的字节码。当然不鼓励直接使用 ASM,因为它要求你必须对 JVM 内部结构包括 class 文件的格式和指令集都很熟悉。引入 CGLI原创 2024-02-23 07:30:00 · 1905 阅读 · 0 评论 -
Spring AOP 实现原理详解之 JDK 动态代理
JDK 动态代理是由 JDK 提供的工具类 Proxy 实现的,动态代理类是在运行时生成指定接口的代理类,每个代理实例(实现需要代理的接口)都有一个关联的调用处理程序对象,此对象实现了InvocationHandler,最终的业务逻辑是在 InvocationHandler 实现类的 invoke 方法上。JDK 动态代理不需要任何依赖。2.2. 定义实体2.3. 被代理的类和接口接口如下:实现类如下:2.4. JDK 代理类代理类如下:2.5. 使用代理启动类原创 2024-02-22 07:30:00 · 1055 阅读 · 0 评论 -
(三)Spring 核心之面向切面编程(AOP)—— 代理的创建
前面两篇文章《(一)Spring 核心之面向切面编程(AOP)—— 配置及使用》和《(二)Spring 核心之面向切面编程(AOP)—— 切面的实现》主要介绍了 Spring AOP 原理解析的切面实现过程,如加载配置,将切面类的所有切面方法根据使用的注解生成对应 Advice,并将 Advice 连同切入点匹配器和切面类等信息一并封装到Advisor。本文在此基础上继续介绍postProcessAfterInitialization 的方法,即代理(JDK 代理和 CGLIB 代理)的创建过程。原创 2024-02-21 07:30:00 · 1093 阅读 · 0 评论 -
(二)Spring 核心之控制反转(IoC)—— 体系结构设计及原理详解
在设计时,首先需要考虑的是 IoC 容器的功能(输入和输出),承接《(一)Spring 核心之控制反转(IoC)—— 配置及使用》,我们初步的画出 IoC 容器的整体功能。原创 2024-02-06 07:30:00 · 1122 阅读 · 0 评论 -
(一)Spring 核心之面向切面编程(AOP)—— 配置及使用
AOP(Aspect Oriented Programming)是一种面向切面的编程思想。面向切面编程是将程序抽象成各个切面,即解剖对象的内部,将那些影响了多个类的公共行为抽取到一个可重用模块里,减少系统的重复代码,降低模块间的耦合度,增强代码的可操作性和可维护性。原创 2024-02-05 01:20:21 · 1303 阅读 · 0 评论 -
深度解析源码,Spring 如何使用三级缓存解决循环依赖
首先我们需要说明,Spring 只是解决了单例模式下属性依赖的循环问题。Spring 为了解决单例的循环依赖问题,使用了三级缓存。在创建 Bean 过程中贯穿着循环依赖问题,Spring 使用三级缓存解决循环依赖,这也是一个重要的知识点,所以我们下面就来看看 Spring 是如何使用三级缓存解决循环依赖的。一个或多个对象之间存在直接或间接的依赖关系,这种依赖关系构成一个环形调用,有下面 3 种方式:@Service@Autowired@Service@Autowired。原创 2024-02-03 16:05:55 · 1617 阅读 · 0 评论 -
透过 Spring 源码解析注解 @Autowired、@Resource 的区别
在 Spring 中依赖注入可以使用 @Autowired、@Resource 和 @Inject 来完成,并且在一般的使用中是可以相互替换的(注意是一般),不过三者还是有区别。我们知道,Spring 对于@Autowired、@Resource 注解使用不同的后置处理器进行处理,@Autowired、@Resource 之间的处理方式不同,@Autowired 是根据类型,@Resource 是根据名称。原创 2024-02-04 07:30:00 · 1646 阅读 · 0 评论 -
Spring 面试必考:Spring Bean 的生命周期和作用域
Spring 只帮我们管理单例模式 Bean 的完整生命周期,对于 prototype 的 Bean ,Spring 在创建好交给使用者之后则不会再管理后续的生命周期。Spring 容器可以管理 singleton 作用域 Bean 的生命周期,在此作用域下,Spring 能够精确地知道该 Bean 何时被创建,何时初始化完成,以及何时被销毁。原创 2024-02-02 07:30:00 · 2729 阅读 · 0 评论 -
(一)Spring 核心之控制反转(IoC)—— 配置及使用
IoC(Inversion of Control),即控制反转,不是什么技术,而是一种设计思想。在 Java 开发中,IoC 意味着将你设计好的对象交给容器控制,而不是传统的在你的对象内部直接控制。IoC Container 管理的是 Spring Bean, 那么 Spring Bean 是什么呢?Spring 里面的 Bean 就类似于定义的一个组件,而这个组件的作用就是实现某个功能的,这里所定义的 Bean 就相当于给了你一个更为简便的方法来调用这个组件去实现你要完成的功能。原创 2024-01-30 07:30:00 · 1822 阅读 · 1 评论 -
通过一个 Spring 的 HelloWorld 引入 Spring 要点
本文主要通过一个示例,向你展示 Spring Framework 组件的典型应用场景和基于这个场景设计出的简单案例,并以此引出 Spring 的核心要点,比如 IOC 和 AOP 等;在此基础上还引入了不同的配置方式, 如 XML,Java 配置和注解方式的差异。首先,对于 Spring 进阶,直接去看 IOC 和 AOP,存在一个断层,所以需要整体上构建对Spring 框架认知上进一步深入,这样才能构建知识体系。原创 2024-01-26 07:30:00 · 1161 阅读 · 3 评论 -
Spring Framework整体架构及各模块关系
但是,持久层的设计则应该遵循一个很重要的原则:保证操作的原子性,即持久层里的每个方法都应该是不可以分割的。与BeanFactory 不同,ApplicationContext容器实例化后会自动对所有的单实例Bean进行实例化与依赖关系的装配,使之处于待用状态(使用BeanFacotry的Bean是延时加载的,ApplicationContext是非延时加载的)。主要作用是在JVM启用时,生成一个代理类,程序员通过代理类在运行时修改类的字节,从而改变一个类的功能,实现AOP 的功能。原创 2023-06-15 13:44:53 · 393 阅读 · 2 评论