电商网站图片是谁做,媒体平台推广,苏州关键词优化怎样,延津县建设局网站什么是AOP#xff1f;
AOP是Aspect-Oriented Programming的缩写#xff0c;是一种面向切面的编程方法。 在AOP中#xff0c;一个切面是一组可以独立于其他代码执行的功能#xff0c;如日志记录、安全性检查、事务处理等。这些功能通常被称为通知#xff0c;并…什么是AOP
AOP是Aspect-Oriented Programming的缩写是一种面向切面的编程方法。 在AOP中一个切面是一组可以独立于其他代码执行的功能如日志记录、安全性检查、事务处理等。这些功能通常被称为通知并且在AOP中被称为切入点。 AOP通过将这些切面织入到应用程序的正常流程中使得可以将这些功能模块化并在不修改主要业务逻辑的情况下将其应用到应用程序中。 这种方法可以让开发人员更专注于业务逻辑而不必担心其他功能的实现细节。同时AOP还可以帮助减少代码冗余提高代码的可维护性和可扩展性。
Spring AOP的实现原理
AOP技术利用一种称为“横切”的技术解剖封装的对象内部并将那些影响了多个类的公共行为封装到一个可重用模块这样就能减少系统的重复代码降低模块间的耦合度并有利于未来的可操作性和可维护性。AOP把软件系统分为两个部分核心关注点和横切关注点。业务处理的主要流程是核心关注点与之关系不大的部分是横切关注点。横切关注点的一个特点是他们经常发生在核心关注点的多处而各处都基本相似。比如权限认证、日志、事务处理。 Spring中AOP实现原理大致分为4个阶段
创建代理对象阶段
在Spring中创建Bean实例都是从getBean()方法开始的 在实例创建之后Spring容器将根据AOP的配置去匹配目标类的类名看目标类的类名是否满足切面规则。如果满足满足切面规则就会调用ProxyFactory创建代理Bean并缓存到IoC容器中。根据目标对象的自动选择不同的代理策略。如果目标类实现了接口Spring会默认选择JDK Proxy如果目标类没有实现接口Spring会默认选择Cglib Proxy当然我们也可以通过配置强制使用Cglib Proxy。
拦截目标对象阶段
当用户调用目标对象的某个方法时将会被一个叫做AopProxy的对象拦截,Spring将所有的调用策略封装到了这个对象中它默认实现了InvocationHandler接口也就是调用代理对象的外层拦截器。在这个接口的invoke()方法中会触发MethodInvocation的proceed()方法。在这个方法中会按顺序执行符合所有AOP拦截规则的拦截器链。
调用代理对象阶段
Spring AOP拦截器链中的每个元素被命名为MethodInterceptor其实就是切面配置中的Advice通知。这个回调通知可以简单地理解为是新生成的代理Bean中的方法。也就是我们常说的被织入的代码片段这些被织入的代码片段会在这个阶段执行。
调用目标对象阶段
MethodInterceptor接口也有一个invoke()方法在MethodInterceptor的invoke()方法中会触发对目标对象方法的调用也就是反射调用目标对象的方法。