Spring源码
文章平均质量分 87
Spring源码
锵锵忒
生如蝼蚁当立鸿鹄之志,命如纸薄应有不屈之心。
展开
-
Spring属性间循环依赖抛BeanCurrentlyInCreationException
Spring属性间循环依赖抛BeanCurrentlyInCreationException背景场景重现问题分析总结背景大家都知道Spring解决不了构造之间的循环依赖,但是可以解决属性间的循环依赖。举个简单例子:@Servicepublic class AAService { @Autowired private BBService bbService; void printAA(String value){ System.out.println("AA pri原创 2021-08-25 14:38:01 · 696 阅读 · 2 评论 -
Spring源码:事务
前言首先,上一篇我大致分析了一下AOP的实现原理:Spring源码:AOP我们都知道Spring的事务是基于AOP实现的,所以要明白事务的话首先要了解AOP的原理。下面我们就看看一些事务的基础知识吧!事务隔离级别Spring事务隔离级别比数据库事务隔离级别多一个defaultDEFAULT (默认)这是一个PlatfromTransactionManager默认的隔离级别,使用数据库默认的事务隔离级别。另外四个与JDBC的隔离级别相对应。READ_UNCOMMITTED (读未提交)原创 2021-04-25 19:21:13 · 134 阅读 · 0 评论 -
Spring源码:AOP
Spring源码:AOPAOP开启AOP生成AOP代理对象调用代理后对象方法AOP开启AOP@EnableAspectJAutoProxy这个注解里会用@Import导入AspectJAutoProxyRegistrar,这个registrar其实它主要的功能就是注册AnnotationAwareAspectJAutoProxyCreator这个类。这个类是一个BeanPostProcessor。@Target(ElementType.TYPE)@Retention(RetentionPol原创 2021-04-20 18:11:44 · 127 阅读 · 0 评论 -
SpringAop源码解析
SpringAop源码解析下面的源码解析是使用的5.3.4版本的注解式开发。@EnableAspectJAutoProxy我们都知道注解式开发只需要在配置类上添加@EnableAspectJAutoProxy注解就能开启我们AOP功能,那下面的分析就以它为切入点分析AOP源码。源码:@Target({ElementType.TYPE})@Retention(RetentionPolicy.RUNTIME)@Documented@Import({AspectJAutoProxyRegistra原创 2021-04-13 18:12:43 · 83 阅读 · 0 评论 -
Springboot启动流程
Springboot启动流程开始目录构造ConfigurableApplicationContext 对象实例推断当前应用类型现在大部分公司都在使用springboot开方项目,由于springboot的开发步骤简单方便,大部人都会使用,但是对于springboot的启动流程大部分初级开发人员并没有了解多少,下面就会以这篇文章稍微细致的分析下springboot的启动流程。开始下面一个非常简单常用的例子开始:@SpringBootApplicationpublic class TestApplic原创 2020-09-02 17:51:34 · 107 阅读 · 0 评论 -
SpringBoot启动流程:创建Environment
Environment组成首先,Environment是Spring3.1才提供的一个接口。它是对当前运行的应用程序的环境的抽象,下面我们了解一下它的组成。先看下uml类图:Environment由两部分组成1)profilesprofile中文直译是"概述"、“简介”、"轮廓"的意思,但在使用spring开发应用程序的时候,我们对profile的认识更亲切的是用在划分多环境的时候。通常,我们会将profile划分成如:开发、测试、预生产、生产环境。每个环境会有有些bean不同、配置不同等。每原创 2020-09-02 16:06:56 · 874 阅读 · 0 评论 -
Springboot启动流程:SpringApplication.run()方法核心逻辑
在上一篇文章【构造SpringApplication实例对象】中我们分析了SpringApplication的构造方法,但是SpringApplication.run()需要返回ConfigurableApplicationContext对象实例,所以下面来一起看下run()中的逻辑。run方法的代码有点长我们将抛弃掉一些比较次要的内容:public ConfigurableApplicationContext run(String... args) { // 声明一个Context容器原创 2020-09-02 16:04:33 · 982 阅读 · 0 评论 -
Springboot启动流程:构造SpringApplication实例对象
Springboot启动流程:构造ConfigurableApplicationContext对象推断当前应用类型设置初始化器、监听器推断当前main方法所在的主类总结springboot项目从一个main方法开始,main方法将会调用SpringApplication的run方法开始springboot的启动流程。所以,本文即从构造SpringApplication对象开始。下面来一起看下run():public static ConfigurableApplicationContext run(C原创 2020-09-02 10:58:42 · 402 阅读 · 0 评论 -
spring源码:Aop标签解析原理详解
spring源码:Aop标签解析原理详解Aop使用示例实现原理小结对于Spring Aop的实现,是非常复杂的,其实现过程主要包含xml标签的解析,切面表达式的解析,判断bean是否需要应用切面逻辑,以及使用Jdk代理或者是Cglib代理生成代理类。本文主要讲解Xml标签的解析的实现原理,在接下来几篇文章中,会依次对Spring Aop剩余的实现过程进行讲解。关于Spring Aop的实现,由...转载 2019-10-22 10:16:47 · 389 阅读 · 0 评论 -
spring源码:bean的创建
spring源码:bean的创建createBean()源码doCreateBean()源码1.bean的实例化autowireConstructor()方法instantiateBean()无参构造instantiate()真正实现实例化2.populateBean()填充属性autowireByName()autowireByType()applyPropertyValues()3. bean...原创 2019-09-29 16:52:31 · 331 阅读 · 0 评论 -
spring源码:bean的加载
spring源码:bean的加载测试代码//xml配置文件的解析ClassPathResource resource = new ClassPathResource("spring.xml"); BeanFactory beanFactory = new XmlBeanFactory(resource); //bean的加载,这篇文章就是讲解这一句代码 MyTestBean my...原创 2019-09-27 16:10:26 · 185 阅读 · 0 评论 -
spring5.0源码导入idea步骤和问题
spring-context.gradle文件中的optional(project(":spring-instrument"))改为compile(project(":spring-instrument"))原创 2019-09-20 09:04:51 · 505 阅读 · 0 评论