spring的AOP,IOC,代理什么关系?
什么是框架?
框架自然是制作好了基本架子,在高级语言代码开发功能角度来看。框架制定了功能模块,用户使用框架,也是为了使用这些功能模块,而程序员使用框架也是基于框架的功能进行业务功能的开发。那么spring的核心功能是什么呢?
AOP定义
定义: 不修改源代码的情况下给程序中多个点上动态添加功能的一种技术
连接点: 可以被选择来进行增强的方法点
切入点: 选择增强的方法
通知: 增强功能
AOP实现思想
作为设计者如何实现AOP功能?功能---->代码---->类----->方法,即我们如何编写类方法实现增强的功能。当我们不知道用户要增强什么什么功能时,需要定义一套标准的API来应对变化未知。这套标准应该解决两个问题
- 增强的具体功能,是方法执行前(能拿到参数)还是方法执行之后(返回结果),还是整个方法过程中,有异常处理如何增强?
- 增强的位置是哪个类的哪个方法
具体实现
1、定义一套标准:使用面向接口编程,接口目的是规范用户,提供功能逻辑,用户通过实现这个接口,实现功能逻辑
2、增强的具体功能:
3、增强的位置:
IOC与AOP的关系
当增强类编写完成,切入点类也编写完成,那么如何让用户自己书写的类被用户书写的增强类切中并产生关联呢?
此时就需要将用户编写的类交给框架来生产,在生产类的过程中,框架会判断类是否需要被增强,当需要被增强时,框架会使用代理的方式将类的实例中的方法进行增强,生成另外一个增强后的实例对象返回给用户。那么这个生产的过程就叫做IOC。
代理模式
1、代理过程
2、静态代理
3、动态代理
4、具体增强逻辑