Spring

IOC:
控制反转,把依赖对象的控制权交给外部容器,有外部容器管理管理这些对象的生命周期。
DI:
依赖注入,组件之间的依赖关系由第三方容器注入。
AOP:
面向切面编程,对OOP的补充,用于将业务无关的代码抽象一个可重用的模块,减少代码耦合,提高可维护性

SpringBean的生命周期:
创建一个对象 > 注入属性 > 检查Awar相关接口 > BeanPostProcessor的前置处理 > 如果实现InitalizingBean接口调用接口方法 > 如果有就调用定义的Init-method > BeanPostProcessor后置处理 > 注册销毁相关回调接口 > 使用Bean > Bean销毁 > 如果实现DispableBean接口调用相关方法 > 调用定义的Destory方法

SpringAOP源码:
创建一个Bean,根据@EnableAspectJAutoProxy导入一个实现了InstantiationAwareBeanPostProcessors接口类AbstractAutoProxyCreator,调用postProcessBeforeInstantiation方法查找增强器。如果没有解析过增强器,获取容器中所有组件的名称,根据名称获取BeanType,根据BeanType判断是否切面类,获取切面类的所有方法。找到方法上的切入点和方法注解,根据注解创建对应的例如Before,Around等方法的增强器存放到增强器缓存中。如果当前对象需要代理,创建代理工厂,设置JDK还是cglib代理,创建代理对象,把匹配的增强器放入对象集合,返回代理对象。
执行代理对象的方法,实际调用代理类的Invoke方法。判断如果注解写需要暴漏属性,在ThreadLocal中暴漏代理对象。获取方法的拦截器链加入方法缓存中。调用before方法 > 目标方法 > finally语句块执行after方法 > 没有异常执行返回通知,有异常执行异常通知。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值