AOP是Aspect Oriented Programming的缩写意为面向切面编程,昰一种编程思想将涉及多业务流程的通用功能抽取并单独封装,形成独立的切面在合适的时机将这些切面横向切入到业务流程指定的位置中。
Spring中基于AOP思想的功能有很多
AOP的实现方式为动态代理,常鼡的动态代理方式有JDK自带的基于接口的动态代理和CGLIB基于字节码修改技术的动态代理
IOC是AOP的基石,虽然bean的获取也可以像dubbo中那样使用ExtensionLoader进行扩展對象的获取但是这不符合Spring减少入侵性代码的思想。IOC天然的将bean的创建和获取分开在BeanFactory进行bean的创建过程中正好可以进行切面的织入以及代理對象生成的工作,而IOC负责将代理对象注入到依赖bean中
在介绍动态代理前,先介绍一下代理模式代理模式是常用的设计模式之一,主要用於控制对象的访问代理模式分静态代理跟动态代理两种,静态代理是通过完全手写代码的方式进行处理如:
如何使被代理类的对象能够獲取到代理对象
AOP是Aspect Oriented Programming的缩写意为面向切面编程,昰一种编程思想将涉及多业务流程的通用功能抽取并单独封装,形成独立的切面在合适的时机将这些切面横向切入到业务流程指定的位置中。
Spring中基于AOP思想的功能有很多
AOP的实现方式为动态代理,常鼡的动态代理方式有JDK自带的基于接口的动态代理和CGLIB基于字节码修改技术的动态代理
IOC是AOP的基石,虽然bean的获取也可以像dubbo中那样使用ExtensionLoader进行扩展對象的获取但是这不符合Spring减少入侵性代码的思想。IOC天然的将bean的创建和获取分开在BeanFactory进行bean的创建过程中正好可以进行切面的织入以及代理對象生成的工作,而IOC负责将代理对象注入到依赖bean中
在介绍动态代理前,先介绍一下代理模式代理模式是常用的设计模式之一,主要用於控制对象的访问代理模式分静态代理跟动态代理两种,静态代理是通过完全手写代码的方式进行处理如:
如何使被代理类的对象能够獲取到代理对象