Spring源码分析

        IOC容器运行机制

                首先从XML或者注解中将所有需要加载到容器中的类的信息存放到BeanDefintion里面

                 然后通过BeanFactory工厂模式创建FactoryBean

                 通过反射将BeanDefintion的类进行实例化

                          有需要对类的属性进行依赖注入

                          在依赖注入的时候需要解决循环依赖问题 

                           在bean创建完毕后,会将bean放入singletionObject容器虽然可以解决循环依赖的问题但是会出现并发问题,其他线程可能在bean还没注入的时候获取bean对象 

                           引入二级缓存来解决并发问题 eariySingletionObjects进行双重检测锁解决

                            最终通过三级缓存singletonFactories 来进行解决AOP依赖问题

                 然后通过getBean将创建好的对象返回         

    bean的生命周期

               单例bean:singeton  

                随着工厂启动创建->构造方法->set方法(注入值)->int方法(初始化)->构建完成->随着工厂关闭销毁

                多例bean:prototype 

                随着工厂启动创建->构造方法->set方法(注入值)->int方法(初始化)->构建完成->JVM垃圾回收器回收      

AOP实现原理

        Spring中已经存在了AOP但由于功能一般还需要引入Aspectg完成其他的一些功能

                Spring中的AOP属于运行时增强,Aspectg属于编译时增强

                Spring的AOP基于代理(Proxying ),Aspectg基于字节码操作(Bytecode Manipulation )

        代理模式:是AOP的实现模式

                代理模式主要分为静态代理和动态代理

          Spring中AOP的实现机制

                        SpringAOP是由接入BeanPostProcessor后置处理器开始的

                        BeanPostProcessor可以监听bean的生命周期事件

Bean的生命周期

                     构建->注入元素,满足依赖->后处理器前置过程->初始化->后处理器后置过程->返回->销毁

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值