Spring源码
蛇皮皮蛋
求大佬笔下留情……
展开
-
Spring源码分析(二)(IoC容器的实现)(3)
BeanDefinition的载入和解析 这个载入过程,相当于把定义的BeanDefinition在IoC容器中转化成一个Spring内部表示的数据结构的过程。IoC容器对Bean的管理和依赖注入功能的实现,是通过对其持有的BeanDefinition进行各种相关操作来完成的。这些BeanDefinition数据在IoC容器中通过一个HashMap来保持和维护。如果需要提高IoC容器的性...原创 2018-11-24 01:17:01 · 4130 阅读 · 1 评论 -
Spring源码分析(三)(解决循环依赖)
spring解决循环依赖主要通过三级缓存去完成。 /** Cache of singleton objects: bean name --> bean instance */ private final Map<String, Object> singletonObjects = new ConcurrentHashMap<String, Object>...原创 2019-05-25 20:01:50 · 4320 阅读 · 0 评论 -
Spring源码分析(三)(@Autowired实现)
依赖注入的实现:https://blog.csdn.net/qq_37598011/article/details/84451591 在自动装配中,不需要对Bean属性做显示的依赖注入声明只需要配置autowiring属性,它具体的实现也在依赖注入中的populateBean方法中,Ioc容器会根据这个属性的配置使用反射自动查找属性的类型或者名称,然后根据属性的类型或者名称自动匹配Io...原创 2019-05-02 13:20:34 · 5026 阅读 · 1 评论 -
Spring源码分析(四)(AOP实现)(2)
Spring AOP拦截器调用的实现 在Spring AOP通过JDK的Proxy方式或CGLIB方式生成代理对象时,相关拦截器已经配置到代理对象中,拦截器在代理对象中起作用是通过对这些方法的回调来完成的。 JdkDynamicAopProxy的invoke拦截 首先来看看JdkDynamicAopProxy生成的Proxy对象: @Override public Ob...原创 2019-05-12 15:56:41 · 3991 阅读 · 0 评论 -
Spring源码分析(四)(AOP实现)(1)
在Spring AOP实现中,使用的核心技术是动态代理。通过动态代理特性可以为任意Java对象创建代理对象。在Spring中可以具体分为JDK代理和CGLIB代理。 在Spring AOP中有一个核心类这个类就是ProxyFactoryBean,这个类是在Spring Ioc环境中创建AOP应用的底层方法,Spring通过这个类完成了对AOP使用的封装。 建立AopProxy代...原创 2019-05-08 23:16:11 · 3949 阅读 · 0 评论 -
Spring源码分析(三)(IoC容器的依赖注入)(2)
protected void populateBean(String beanName, RootBeanDefinition mbd, BeanWrapper bw) { //这里取得在BeanDefinition中设置的property值,这些property来自对BeanDefinition的解析 //具体的解析过程可以参看载入和解析BeanDefinitoin的分析 Pro...原创 2018-11-30 00:03:48 · 3961 阅读 · 0 评论 -
Spring源码分析(三)(IoC容器的依赖注入)(1)
依赖注入的过程是用户第一次向IoC容器索要Bean时才触发的,它也可以在BeanDefinition信息中通过控制lazy-init属性来让容器完成对Bean的预实例化。这个预实例化实际上也是一个完成依赖注入的过程,但它是在初始化的过程中完成的。当用户向IoC容器索要Bean时。基本的loC容器接口BeanFactory中,有一个getBean的接口定义,这个接口的实现就是触发依赖注入发生...原创 2018-11-29 18:53:39 · 4115 阅读 · 0 评论 -
Spring源码分析(二)(IoC容器的实现)(1)
Ioc(Inversion of Control)——“控制反转”,不是什么技术,而是一种设计思想。在Java开发中,Ioc意味着将你设计好的对象交给容器控制,而不是传统的在你的对象内部直接控制。理解好Ioc的关键是要明确“谁控制谁,控制什么,为何是反转(有反转就应该有正转了),哪些方面反转了”,那我们来深入分析一下: ●谁控制谁,控制什么:传统Java SE程序设计,我们直接在对象内部...原创 2018-11-20 23:11:44 · 4009 阅读 · 0 评论 -
Spring源码分析(一)
(Spring 4.3.21) 一:Core Container(核心容器) spring-core和spring-beans模块提供框架的基础部分,包括IOC和依赖注入特征。这 BeanFactory是工厂模式的复杂实现。它消除了对程序化单例的需求,并允许你从实际程序逻辑中分离依赖项的配置和规范。 它由以下部分组成: spring-core(Core模块主要包含Spr...原创 2018-11-21 09:07:47 · 4085 阅读 · 0 评论 -
Spring源码分析(二)(IoC容器的实现)(2)
IoC容器的初始化过程 简单来说IoC容器的初始化是由refresh()方法启动的,这个方法标志着IoC容器的正式启动。这个启动包括BeanDefinition的Resouce定位、载入和注册三个基本过程。 第一个过程是Resource定位过程。这个Resource定位指的是BeanDefinition的资源定位,它由ResourceLoader通过统一的Resource 接口...原创 2018-11-23 00:12:23 · 4004 阅读 · 0 评论 -
Spring Boot启动原理解析(执行流程篇)
SpringApplication.run @SpringBootApplication public class DemoApplication { public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); ...原创 2019-06-06 14:49:09 · 7053 阅读 · 0 评论