![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
spring
文章平均质量分 92
spring源码分析
sun_tantan
这个作者很懒,什么都没留下…
展开
-
【SpringBoot】启动过程之——SpringApplication初始化及运行
springApplication初始化及运行过程原创 2022-07-04 13:13:37 · 644 阅读 · 0 评论 -
【SpringBoot】中的 ApplicationContextInitializer 与 ApplicationListener
spring 中的 初始器与监听器,及如何自定义实现原创 2022-06-10 21:03:20 · 799 阅读 · 1 评论 -
【SpringBoot】启动过程之——注解
@SpringBootApplication注解详谈原创 2022-06-10 19:36:51 · 1156 阅读 · 0 评论 -
【SpringBoot】SPI 与 spring.factories
SPI 即 Service Provider Interface。是 JDK 内置的一种服务提供发现机制,为某个接口寻找服务的实现,在模块化设计中这个机制很重要。原创 2022-06-06 23:36:26 · 791 阅读 · 0 评论 -
【SpringBoot】实现自定义 spring-boot-starter
Spring Boot 的依赖管理、实现一个自定义的 spring-boot-starter原创 2022-06-06 23:30:34 · 1384 阅读 · 0 评论 -
Spring AOP(六)【源码分析】Spring中CgLib动态代理的实现
CgLib中AOP的实现是基于org.springframework.cglib.proxy包中Enhancer和MethodInterceptor(是CgLib包中的)两个接口来实现的。创建增强器Enhancer,并配置其callback为自定义的MethodInterceptor,然后创建代理。其中的代理逻辑与jdk相似,都是通过链式拦截器实现。原创 2020-08-12 00:30:57 · 758 阅读 · 0 评论 -
Spring AOP(五)【源码分析】Spring中JDK动态代理及其链式增强的实现
JDK的动态代理是基于java.lang.reflect包中Proxy和InvocationHandler。首先根据Adivsor创建一个拦截器链,然后通过递归调用,实现对当前Method的链式增强。原创 2020-07-31 02:13:34 · 458 阅读 · 0 评论 -
Spring AOP(四)【源码分析】基于注解的AOP——第3步:根据Advisor创建代理
本文过程为根据Advisor增强器创建代理,创建的过程中会决定使用jdk或cglib的方式。目标对象实现了接口则优先使用jdk代理。原创 2020-07-28 00:49:53 · 329 阅读 · 0 评论 -
Spring AOP(三)【源码分析】基于注解的AOP——第1、2步:解析配置、获取目标Advisor
对于注解形式的SpringAOP实现流程,首先解析配置,注册Bean初始化后的回调,然后获取针对于目标Bean的Advisor增强器。在Bean的初始化之后,1.遍历全部带@Aspect注解的Bean,解析相关信息创建Advisor;2.找到用于当前Bean的Advisor:根据ClassFilter和MethodMatcher过滤。原创 2020-07-24 12:01:34 · 789 阅读 · 2 评论 -
Spring AOP(二)AOPAlliance与SpringAOP核心接口介绍
AOP联盟是java对于AOP提供的一系列标准接口,顶层接口有:Advice通知,及其继承接口MethodInterceptor方法拦截器;JointPoint连接点,及其继承接口MethodInvocation。Spring或其他具有AOP概念的框架都会依赖于此,从Spring扩展的接口来看,对于AOP的支持局限于方法的拦截。原创 2020-07-22 00:56:38 · 4107 阅读 · 1 评论 -
Spring AOP(一)Spring AOP实现原理简介
Spring AOP即面向切面,有效地避免了在每个对象中引用公共行为,这种重复性的代码,是对面向对象编程的补充。Spring AOP的原理是:IOC容器+动态代理。Java中的动态代理分为jdk、cglib,Spring框架根据策略判断使用哪种。原创 2020-07-21 00:07:08 · 357 阅读 · 0 评论 -
Spring IOC(六)循环依赖的解决——Spring对于Bean的三级缓存
Singleton类型的Bean基于setter的循环依赖可解决,原理是spring中的三级缓存:一级存储完整Bean、二级存早期实例、三级存单例工厂。但是Singleton类型基于构造器的循环依赖不可解决;不是Singleton类型的Bean循环依赖也不可解决,因为不会被缓存。原创 2020-07-07 15:36:21 · 343 阅读 · 0 评论 -
Spring IOC(五)byType、@Autowire自动装配源码分析——根据类型属性注入
本文主要分析byType类型和@Autowire注解的自动装配过程:两者是有相似之处的:都是根据类型选取符合条件的Bean,然后筛选。不同的是,目标类型有多个Bean符合条件时,byType不会对属性名进行判断直接抛出错误,而@Autowire会再按照属性名筛选。原创 2020-07-03 19:37:44 · 1223 阅读 · 0 评论 -
Spring IOC(四)doCreateBean方法源码分析——创建Bean的过程
真正创建Bean的过程可以概括为:首先实例化初始Bean,注册早期工厂;然后注入属性:调用getBean先创建它依赖的Bean;最后进行初始化:处理aware信息的获取、BeanPostProcessor、InitializingBean等类型Bean的回调方法。原创 2020-07-02 19:41:03 · 673 阅读 · 0 评论 -
Spring IOC(三)createBean方法源码分析——创建Bean之前的准备工作
在真正创建Bean之前需要准备一些处理工作:定义方法的重写替换、通过回调实现Bean实例的代理。原创 2020-06-30 20:26:29 · 602 阅读 · 0 评论 -
Spring IOC(二)doGetBean方法源码分析——获取Bean的过程
获取Bean首先要做一些准备工作:对于Singleton类型先使用三级缓存检查本地缓存;对于Property类型需要检查循环依赖;对于SingletonBean的创建需要加锁,通过创建单例工厂,并重写getObject方法实现。对于PropertyBean的创建则不需要进行如上判断。原创 2020-06-29 11:44:44 · 853 阅读 · 0 评论 -
Spring IOC(一)整体介绍/Spring IOC核心功能概括
Spring的两大特性之一:IOC控制翻转,把Bean的依赖关系、创建销毁等生命周期,交给容器去管理。原创 2020-06-29 01:45:13 · 534 阅读 · 0 评论