![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Spring源码
文章平均质量分 74
Spring源码
星夜孤帆
人之有吾,当应披荆棘,斩鬼熊,成就一番大事
展开
-
Spring事件监听
spring事件监听原创 2023-01-19 14:36:52 · 252 阅读 · 0 评论 -
Spring如何处理循环依赖问题
循环依赖:多个对象之间存在循环的引用关系,在初始化过程当中,就会出现"先有蛋还是先有鸡"的问题视频教程原创 2021-09-16 00:11:55 · 312 阅读 · 0 评论 -
Spring MVC源码分析
一、SpringMVC请求处理流程在阅读源码之前先进行SpringMVC源码环境的搭建SpringMVC环境搭建里面也对Controller控制器的几种实现方式,进行了简单说明,便于我们后续的理解。下面也给一张流程图,方便我们进行梳理。DispatcherServlet:DispatcherServlet是SpringMVC中的前端控制器,负责接收request并将request转发给对应的处理组件。HandlerMapping:HanlerMapping是SpringMVC.原创 2021-06-13 15:17:28 · 5055 阅读 · 1 评论 -
Controller控制器实现的三种方式
一、搭建Web环境搭建Servlet环境、搭建Spring MVC环境具体搭建过程,参加上述过程,先Servlet后MVC1.1 pom<?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:s.原创 2021-06-13 14:29:07 · 1343 阅读 · 0 评论 -
Spring编程式事务源码分析
一、前言在Spring中,事务有两种实现方式:编程式事务管理:编程式事务管理使用TransactionTemplate可实现更细粒度的事务控制。 声明式事务管理:基于Spring AOP实现。其本质是对方法前后进行拦截,然后在目标方法开始之前创建或者加入一个事务,在执行完目标方法之后根据执行情况提交或者回滚事务。声明式事务管理不需要入侵代码,通过@Transactional就可以进行事务操作,更快捷而且简单(尤其是配合springboot自动配置,可以说是精简至极!),且大部分业务都可以...原创 2021-06-08 19:54:43 · 391 阅读 · 2 评论 -
从源码剖析Spring事务失效问题
1.Bean是否是代理对象2.入口函数是否是public的3.数据库是否支持事务(Mysql的Mvlsam不支持事务),行锁才支持事务4.切点是否配置正确5.内部方法间调用导致事务失效因为this不是代理对象,可以配置 expose-proxy="true",就可以通过AopContext.currentProxy0)获取到当前类的代理对象。<! -- expose-proxy="true”类内部可以获取到当前类的代理对象--><aop: aspectj-aut.原创 2021-06-06 16:39:36 · 319 阅读 · 1 评论 -
Spring事务源码分析
一、搭建Spring源码环境1.1 声明式事务plugins { id 'java'}group 'org.springframework'version '5.0.21.BUILD-SNAPSHOT'sourceCompatibility = 1.8repositories { mavenCentral()}dependencies { compile project(':spring-context') compile project('原创 2021-06-05 22:20:00 · 619 阅读 · 2 评论 -
Spring事务分析
一、Spring事务1.1 数据库事务特性1.2 事务隔离级别mysql通过间隙锁,解决了幻读问题二、Spring事务应用及源码分析2.1 Spring事务相关API2.2 编程式事务public class SpringTransactionExample { private static String url = "jdbc:mysql://localhost:3306/sprin..原创 2021-06-05 16:06:11 · 246 阅读 · 1 评论 -
责任链模式在SpringAop中的使用
先模拟一下SpringAop中的责任链public interface MethodInvocation { Object proceed() throws Throwable; }定义拦截器接口public interface MethodInterceptor { Object invoke(MethodInvocation methodInvocation) throws Throwable;}定义前置通知,在目标方法调用前执行通知pub原创 2021-06-03 21:06:21 · 343 阅读 · 0 评论 -
闲聊 InstantiationAwareBeanPostProcessor
为什么要说这个呢?因为我发现,很多人都以为 Spring AOP 是通过这个接口来作用于 bean 生成代理的。下面先看一下整个SpringIOC流程图中可以看出,InstantiationAwareBeanPostProcessor作用于Bean初始化前,分别在Bean实例化前和实例化后执行:postProcessBeforeInstantiationpostProcessAfterInstantiation而BeanPostProcessor中的两个方法,作用于Bean实例化后..原创 2021-06-02 17:53:41 · 778 阅读 · 2 评论 -
JDK&CGLIB动态代理源码解析
一、JDK动态代理jdk代理是基于接口的代理,所以被代理的对象必须是有接口实现的类,代理创建时通过Proxy.newProxyInstance实现的,这个方法有三个参数://指定要使用的类加载器ClassLoader loader,//被代理的类所实现的接口,增强接口的方法Class<?>[] interfaces,//方法处理器,会拦截所有方法,然后执行增强参数。InvocationHandler inoker参考博客、参考博客、参考博客、参考博客...原创 2021-06-01 20:19:28 · 497 阅读 · 1 评论 -
Spring AOP 源码解析
视频教程、视频教程原创 2021-05-30 19:16:57 · 274 阅读 · 0 评论 -
SpringBean的生命周期
一、SpringBean的生命周期Spring Bean的生命周期参考博客原创 2021-05-30 02:51:38 · 201 阅读 · 0 评论 -
Spring常用扩展点
一、BeanPostProcessor如果你想在Spring容器完成实例化,配置和初始化bean之后实现一些自定义逻辑,则可以插入一个或多个自定义BeanPostProcessor实现。这些实现成为后置处理器。BeanPostProcessor接口包含两个回调方法。当实现此接口类通过容器注册为后处理器时,由Spring容器实例的Bean,Spring容器会在bean 的init方法执行前回调postProcessBeforeInitialization方法,然后会在bean初始化之后回原创 2021-05-29 18:55:30 · 9468 阅读 · 8 评论 -
Spring中init-method和destroy-method的四种方式
在java的实际开发过程中,我们可能常常需要使用到init method和destroy method,比如初始化一个对象(bean)后立即初始化(加载)一些数据,在销毁一个对象之前进行垃圾回收等。要用这两个方法,自然先要知道这两个方法究竟是干嘛用的。而从字面意思就很容易理解,一个是加载,一个是销毁。下边就正式代码演示几种创建方式:一、@Bean注解方式public class Person { private String name; private Integer原创 2021-05-29 16:31:13 · 12350 阅读 · 0 评论 -
Spring IOC容器源码分析
一、Spring的理解IOC:控制反转AOP:面向切面编程Spring首先它是一个框架,在我们整个开发流程中,所有的框架几乎都依赖Spring,Spring帮我们起到一个IOC容器的作用,用来承载我们整体的Bean对象,它帮我们进行了整个对象,从创建到销毁整个生命周期的管理。我们在使用Spring的时候,可以使用配置文件,也可以使用注解的方式,来进行相关实现,但是,当我们程序开始启动之后,我要把注解或者配置文件,定义好的那些Bean对象,转化成一个BeanDefinition,然后,完成整个原创 2021-05-23 18:53:15 · 296 阅读 · 2 评论 -
SpringIOC与Bean工厂
一、Spring Bean的实例化过程BeanDefinition用来描述Spring Bean的原创 2021-05-22 20:52:44 · 191 阅读 · 0 评论 -
Spring源码编译
1.下载gradle,可以去官网下载,gradle版本需要4.2以上,小编这里选择的是gradle4.9版本。Gradle官网2.gradle下载后不需要安装,解压再本地磁盘后配置环境变量即可2.1 配置gradle环境变量3. 下载spring-framework源码Github官网4.配置idea属性5.特殊处理6.新建gradle项目测试7.测试环境搭建参考、参考博客、视频教程...原创 2021-05-22 17:25:11 · 161 阅读 · 0 评论 -
@Configuration源码解析
一、@Configuration1.1 未加@Configuration1.2 加上@Configuration1.3 Cglib动态代理Gitee、视频教程原创 2021-05-21 22:01:42 · 292 阅读 · 0 评论