基于SSM框架的软件架构设计实战Software
Architecture
Design
Practice
Based
on
SSM
《Framework》第六章中详细阐述了Spring框架的AOP(面向切面编程)机制,这一机制的核心概念是面向切面编程。
AOP——编程式Spring
AOP——声明式Spring
AOP既兼容JDK动态代理,亦接纳CGLib动态代理。若目标对象具备接口,系统将默认启用JDK动态代理;用户亦有权强制选择CGLib动态代理。反之,若目标对象未实现接口,系统将自动切换至CGLib动态代理。在Spring框架中,这一机制得以应用。
AOP——
编程式Spring
AOP——编程式(增强)SpringAOP的原理在于,它会对所有类进行扫描,一旦发现某个类实现了增强接口,便会将该类中的增强方法编织到Spring框架中。
AOP——编程式(增强)Spring
AOP技术中,类型前置增强负责在目标方法被调用之前执行;后置增强则是在目标方法调用完毕后进行;异常增强则是在目标方法调用过程中出现异常时触发;环绕增强则是在目标方法调用前后均会执行;而引介增强则是为特定类生成能够实现新接口的代理,这一过程由Spring框架完成。
AOP——编程式(增强)Spring
AOP(面向切面编程)通过编程方式定义增强类,并在其中对特定增强接口的特定方法进行重写,以此实现增强功能。在使用过程中,需创建代理工厂(ProxyFactory),通过调用其setTarget()方法来设定目标对象,然后传入目标对象作为参数。接着,通过调用代理工厂的addAdvice()方法,添加增强类实例作为参数。最后,通过调用ProxyFactory的getProxy()方法,获取代理对象。这一过程在Spring框架中得以实现。
AOP(面向切面编程)中的编程式(增强)前置增强类method,用于表示连接点方法。该方法的类型为Methodargs,代表连接点方法的参数。Methodargs是一个Object数组,而target则指的是目标对象。在Spring框架中,这种表示方法的方式被广泛应用。
AOP(面向切面编程)中的编程式(增强)后置增强类,其名为returnValue,负责处理连接点方法的返回值;该类涉及三个要素:连接点方法、连接点方法的参数以及目标对象;此外,此增强类是在Spring框架中实现的。
AOP——编程式(增强)后置增强类Spring
AOP——一种编程式的(增强)异常处理机制,其中包含方法:指定连接点的方法、方法参数、目标对象以及异常:由连接点方法引发的异常,Spring框架中用于处理这些异常。
AOP——编程式(增强)异常增强类Spring
AOP——编程式(增强)环绕增强类Spring
AOP(面向切面编程)通过编程方式引入(增强)引介增强类,使目标对象能够实现原本未具备的接口,并继承自DelegatingIntroductionInteceptor类,在Spring框架中得以应用。
AOP编程式(切面)增强技术为织入提供了具体的位置信息,例如方法执行的前后。然而,它并未明确指出应将织入操作应用于哪些类的哪些方法。这种具体信息通过切入点来描述,即切点加增强,从而实现了对Spring框架的增强。
AOP——编程式(切面)Spring
AOP(面向切面编程)中的静态方法名匹配切面,它通过类筛选及方法名称的匹配来设定切点,进而定义切面的实施步骤。具体操作是创建一个切面类,并使其继承自StaticMethodMatcherPointcutAdvisor,然后在MethodMatcher接口中定义的matches()方法上进行重写。这一过程是在Spring框架中实现的。
AOP(面向切面编程)通过静态方法名匹配实现切面,切面中定义的method表示连接点方法,该方法的类型为MethodTargetClass,它是一个Class类型的对象,代表任意类类型。Spring框架中,这种匹配方式用于实现切面编程。
AOP——编程式(切面)静态方法名匹配切面Spring
AOP(面向切面编程)采用静态正则表达式方法名匹配切面技术,即通过正则表达式来定义切入点。实现这一功能的类为RegexpMethodPointcutAdvisor。该类所具备的功能已经十分完善,因此无需再创建其子类来扩展Spring框架。
面向对象编程——采用编程方式实现的(切面)静态正则表达式方法名称匹配技术,适用于Spring框架。
AOP中的编程式动态切面编程,其中预先设定的切面被称为静态切面,与之对应的切点则称为静态切点。在确定切点时,不仅可能需要依据方法名称,还可能需要参考方法参数。那些在运行时才确定的切点,我们称之为动态切点,而相应的切面则被称为动态切面。Spring
AOP(面向切面编程)中的动态切面编程:首先,需定义一个切点类;接着,让该切点类继承自DynamicMethodMatcherPointcut;最后,在继承后的类中重写matches()方法。这一过程在Spring框架中得以实现。
AOP(面向切面编程)中的动态切面方法:指定连接点的方法,目标对象为:目标类,参数为:连接点方法的输入参数,这些参数是Object类型的可变参数,由Spring框架提供支持。
AOP——编程式(切面)动态切面Spring
AOP(面向切面编程)中的编程式引介切面,其功能因引介增强的局限性,仅能应用于类,无法作用于方法。因此,在应用Spring框架提供的类DefaultIntroductionAdvisor时,引介切面无需指定具体的切入点。
AOP——
声明式Spring
AOP技术中的声明式Spring框架,通过IoC(控制反转)机制,将包括代理工厂、目标对象、代理对象、切面以及增强等在内的各类对象的生成过程,委托给IoC容器进行管理。在使用过程中,用户可以直接从容器中提取代理对象进行使用。这一机制的核心组件是ProxyFactoryBean类,该类作为FactoryBean的具体实现,主要负责为其他Bean生成代理对象。在Spring框架中,这一机制发挥着至关重要的作用。
AOP(面向切面编程)的声明式配置文件编写涉及以下步骤:首先,声明增强或切面;其次,声明目标对象Bean;接着,声明代理对象Bean,并设置其class属性为ProxyFactoryBean;然后,注入代理对象Bean的interfaces属性;紧接着,注入代理对象Bean的target属性(即目标对象);此外,还需注入代理对象Bean的interceptorNames属性(对应增强或切面);根据实际情况,还需注入代理对象Bean的proxyTargetClass属性。这些步骤均需在SPRING框架中完成。
AOP——
AspectJSpring
AOP(面向切面编程)在AspectJSpringAOP中的应用中,其运行期的切入点表达存在不足,例如,无法对带有特定注解的方法进行切入。此外,当尝试织入到静态方法时,若采用配置式方法,目标对象就必须是Spring容器中的Bean。
AOP(面向切面编程)在AspectJ中的应用具有显著特点:无论是通过注释或配置文件进行配置,AspectJ都展现出更加直观和紧凑的配置方式,相比Spring AOP,其配置过程显得更为友好。此外,AspectJ能够实现编译期的代码织入,而Spring AOP仅限于运行期织入,这使得代码织入的灵活性受限,例如,无法将织入操作应用于带有特定注释的方法上。AspectJ确立了一套详尽的切入点表达式规范,使得切入点的定义更加多样化与灵活。在AspectJ中,定义切面无需遵循框架所提供的类继承或接口实现,这大大降低了其侵入性。Spring
AOP,即面向切面编程,通过AspectJ(一种基于注解的框架)来定义切面类。在切面类中,我们通过注解来指定切入点和增强方法。当需要使用时,会创建一个代理工厂,即AspectJProxyFactory类的实例。接着,通过调用代理工厂的setTarget()方法来设置目标对象,使用addAspect()方法添加切面,最后通过getProxy()方法获取代理对象。这一过程在Spring框架中得以实现。
AOP技术中的AspectJ(通过注解实现)定义了以下注解:@Aspect用于标识一个切面类,@Pointcut用于标识切点,@Before用于标识前置增强方法,@AfterReturning用于标识后置增强方法,@After用于标识最终增强方法,@AfterThrowing用于标识异常增强方法,@Around用于标识环绕增强方法,@DeclareParents用于标识引介增强,这些注解均用于Spring框架中。
AOP中的AspectJ(注解式)切入点表达式由函数(关键字)和参数构成,包括4类9个方法。这些方法分别对应于切入点函数、入参、目标类和代理类。具体来说,切入点函数方法入参涉及目标类和代理类。切入点函数的目标类和代理类分别用于指定执行方法和匹配注解。例如,execution()方法用于匹配指定名称的模式串,@annotation()方法则用于匹配标注了特定注解的方法。此外,方法入参的切入点函数如args()和@args()分别用于匹配带有特定参数的方法和入参标注了特定注解的方法。目标类切入点函数的within()和target()分别用于匹配指定类及其子类内的所有方法和指定类(接口)及其子类(实现类)内的所有方法。代理类切入点函数的this()用于匹配参数指定的目标类及其子类内的方法。Spring框架对这些切入点函数提供了支持。
AOP中的AspectJ注解,其通配符功能包括对任意字符的匹配,但此匹配仅限于上下文中的一个元素。若需匹配上下文中的多个元素,则需结合通配符使用。在表示类时,必须与星号(*)结合,而作为入参时,则单独使用加号(+)。使用加号(+)可匹配指定类的所有子类或指定接口的所有实现类,且这一符号需紧随类名或接口名之后。在Spring框架中,这一机制得以应用。
AOP中的AspectJ注解逻辑运算符配置文件,采用了&&表示逻辑与(and),||表示逻辑或(or),以及!表示逻辑非(not)。例如,@Before("anyMethod()&&args(java.lang.String)")这一注解表示,只有当方法名符合anyMethod且参数类型为java.lang.String时,才触发切入点Spring。
AOP——AspectJ(基于注解)Spring
AOP技术,如AspectJ(采用XML格式),将切面、切入点以及增强等元素从注解中提取出来,放置于配置文件中。这一做法带来的显著优势是实现了“非侵入性”。具体操作步骤包括编写切面类,并创建配置文件;在配置文件中,需声明aop命名空间,并完成相应的配置工作。
AOP——AspectJ(基于XML)的注意事项:一个配置文件中能够设定多个标签,每个标签均可采用不同的proxy-target-class属性;标签内部可以进一步定义标签,此时,该切入点便仅限于其所属的切面进行调用。
Time
Copyright © 2018 All Rights Reserved 版权所有 宁国人才网 苏ICP备2024139598号-6
地址:安徽省合肥市瑶海区 EMAIL:
Powered by PHPYun.