![](https://img-blog.csdnimg.cn/20210901224214801.jpeg?x-oss-process=image/resize,m_fixed,h_224,w_224)
[TL5]框架源码专题-Spring
文章平均质量分 93
[TL5]框架源码专题-Spring
萧 炎
这个作者很懒,什么都没留下…
展开
-
Spring之事务底层原理源码解析
文章目录一、`@EnableTransactionManagement`工作原理二、Spring事务基本执行原理三、Spring事务详细执行流程四、Spring事务传播机制五、Spring事务传播机制分类案例分析情况1情况2情况3情况4六、Spring事务强制回滚七、TransactionSynchronization一、@EnableTransactionManagement工作原理开启Spring事务本质上就是增加了一个Advisor,但我们使用@EnableTransactionManagemen原创 2022-01-03 13:08:40 · 3787 阅读 · 1 评论 -
Spring之AOP底层原理源码解析(下)
文章目录一、ProxyFactory选择cglib或jdk动态代理原理二、代理对象创建过程2.1 JdkDynamicAopProxy2.2 ObjenesisCglibAopProxy三、代理对象执行过程四、各注解对应的MethodInterceptor五、AbstractAdvisorAutoProxyCreator六、@EnableAspectJAutoProxy七、Spring中AOP原理流程图一、ProxyFactory选择cglib或jdk动态代理原理ProxyFactory在生成代理对象之原创 2021-12-31 08:00:12 · 490 阅读 · 0 评论 -
Spring之AOP底层原理源码解析(上)
文章目录一、cglib和JDK动态代理二、ProxyFactory三、Advice的分类四、Advisor的理解五、创建代理对象的方式5.1 ProxyFactoryBean5.2 BeanNameAutoProxyCreator5.3 DefaultAdvisorAutoProxyCreator六、对Spring AOP的理解七、AOP中的概念八、Advice在Spring AOP中对应API九、TargetSource的使用十、Introduction十一、LoadTimeWeaver一、cglib和原创 2021-12-30 22:39:22 · 577 阅读 · 0 评论 -
Spring之整合MyBatis底层原理源码解析
文章目录一、整合核心思路二、Mybatis-Spring 1.3.2版本底层源码执行流程三、Mybatis-Spring 2.0.6版本(最新版)底层源码执行流程四、Spring整合Mybatis后一级缓存失效问题一、整合核心思路由很多框架都需要和Spring进行整合,而整合的核心思想就是把其他框架所产生的对象放到Spring容器中,让其成为Bean。比如Mybatis,Mybatis框架可以单独使用,而单独使用Mybatis框架就需要用到Mybatis所提供的一些类构造出对应的对象,然后使用该对象原创 2021-12-30 20:33:06 · 1124 阅读 · 1 评论 -
Spring配置类源码剖析
文章目录一、解析配置类总结一下一、解析配置类解析配置类流程图:解析配置类思维脑图:1、在启动Spring时,需要传入一个AppConfig.class给ApplicationContext,ApplicationContext会根据AppConfig类封装为一个BeanDefinition,这种BeanDefinition我们把它称为配置类BeanDefinition2、ConfigurationClassPostProcessor中会把配置类BeanDefinition取出来3、构造一个C原创 2021-12-30 20:09:03 · 495 阅读 · 0 评论 -
【思路总结】Spring中类的构造方法与@Autowired注解关系
我们平时工作中使用Spring的时候,大多数情况下是这样的:@Servicepublic class UserService { @Autowired private OrderService orderService;}我们不会去给这个类特意的添加构造方法,一般都是使用默认的无参构造了。而我们注入属性,也是用@Autowired或者@Resource注解来完成依赖注入。思考一下,如果我们的一个类中有多个构造方法呢?Spring创建这个Bean的时候肯定要使用这个类的构造方法实例化,自原创 2021-11-30 08:35:06 · 3557 阅读 · 0 评论 -
Spring之启动过程源码分析
文章目录前言分析BeanFactoryPostProcessorBeanDefinitionRegistryPostProcessor如何理解refresh()?refresh()底层原理流程执行BeanFactoryPostProcessorLifecycle的使用前言分析通常,我们说的Spring启动,就是构造ApplicationContext对象以及调用refresh()方法的过程。 首先,Spring启动过程主要做了这么几件事情:1、构造一个BeanFactory对象2、解析配置类,得原创 2021-11-02 21:29:04 · 305 阅读 · 0 评论 -
Spring之推断构造方法源码解析
文章目录一、Spring中构造方法推断思想1.1 只有一个构造方法1.2 有多个构造方法1.3 推断构造方法总结二、源码思路2.1 autowireConstructor()2.2 为什么分越少优先级越高?2.3 @Bean的情况三、推断构造方法流程图AutowiredAnnotationBeanPostProcessor中推断构造方法不同情况思维脑图一、Spring中构造方法推断思想Spring中的一个bean,需要实例化得到一个对象,而实例化就需要用到构造方法。一般情况下,一个类只有一个构造方法:原创 2021-11-30 07:19:39 · 583 阅读 · 3 评论 -
Spring循环依赖原理及底层源码解析
文章目录一、什么是循环依赖二、Bean的生命周期三、三级缓存四、解决循环依赖思路分析1、如何打破循环依赖2、singletonFactories3、earlySingletonObjects五、总结反向分析一下singletonFactories一、什么是循环依赖很简单,就是A对象依赖了B对象,B对象依赖了A对象。比如:// A依赖了Bclass A{ public B b;}// B依赖了Aclass B{ public A a;}那么循环依赖是个问题吗?如果不考虑Sprin原创 2021-09-20 11:23:49 · 1386 阅读 · 1 评论 -
Spring之依赖注入源码解析(下)
文章目录findAutowireCandidates()实现关于依赖注入中泛型注入的实现@Qualifier的使用@Resource上节我们讲了Spring中的自动注入(byName,byType)和@Autowired注解的工作原理以及源码分析,今天我们来分析剩下的核心方法:@NullableObject resolveDependency(DependencyDescriptor descriptor, @Nullable String requestingBeanName, @Nullabl原创 2021-09-16 07:30:30 · 463 阅读 · 0 评论 -
Spring之依赖注入源码解析(上)
文章目录一、Spring中到底有几种依赖注入的方式?1、手动注入2、自动注入2.1 XML的autowire自动注入2.2 @Autowired注解的自动注入二、寻找注入点1、static的字段或方法为什么不支持2、桥接方法三、注入点进行注入1、字段注入2、Set方法注入依赖注入底层原理流程图:https://www.processon.com/view/link/5f899fa5f346fb06e1d8f570一、Spring中到底有几种依赖注入的方式?首先分两种:1、手动注入2、自动注入1原创 2021-09-13 06:59:14 · 461 阅读 · 0 评论 -
[思路理解] - 理解Spring中的BeanPostProcessor和InstantiationAwareBeanPostProcessor
一、BeanPostProcessorpublic interface BeanPostProcessor { @Nullable default Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException { return bean; } @Nullable default Object postProcessAfterInitialization(Object be原创 2021-09-11 17:11:53 · 2062 阅读 · 1 评论 -
Spring之Bean的生命周期源码解析(下)
Bean的销毁过程Bean销毁是发送在Spring容器关闭过程中的。 在Spring容器关闭时,比如:AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(AppConfig.class);UserService userService = (UserService) context.getBean("userService");userService.test();// 容器关原创 2021-09-11 10:00:10 · 171 阅读 · 0 评论 -
Spring之Bean的生命周期源码解析(上)
文章目录一、Bean的生成过程1. 生成BeanDefinition2. 合并BeanDefinition3. 加载类ClassUtils.getDefaultClassLoader()4. 实例化前(postProcessBeforeInstantiation)5. 实例化5.1 Supplier创建对象5.2 工厂方法创建对象5.3 推断构造方法6. BeanDefinition的后置处理(postProcessMergedBeanDefinition)7. 实例化后(postProcessAfterI原创 2021-09-10 08:10:46 · 288 阅读 · 0 评论 -
Spring之底层架构核心概念解析
本节课的内容,是后续看Spring源码所必备的,防止后续看源码的过程中,遇到不会的概念得单独跳出来学习。BeanDefinitionBeanDefinition表示Bean定义,BeanDefinition中存在很多属性用来描述一个Bean的特点。比如:class,表示Bean类型scope,表示Bean作用域,单例或原型等lazyInit:表示Bean是否是懒加载initMethodName:表示Bean初始化时要执行的方法destroyMethodName:表示Bean销毁时要执行的原创 2021-09-05 21:12:28 · 397 阅读 · 0 评论 -
01-Spring底层核心原理解析
梳理Spring中核心知识点,让大家对Spring的底层有一个整体的大致了解,比如:Bean的生命周期底层原理依赖注入底层原理初始化底层原理推断构造方法底层原理AOP底层原理Spring事务底层原理但都只是大致流程,后续会针对每个流程详细深入的讲解并分析源码实现。先来看看入门使用Spring的代码:ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("spring.xml");Us原创 2021-09-01 22:28:14 · 260 阅读 · 0 评论