AOP基于XML配置详解

一、AOP织入配置

<aop:config> 
    <!-- 声明切面 -->
    <aop:aspect ref="切面类id">
	    <!-- 抽取切点表达式 -->
        <aop:pointcut id="切点id" expression="切点表达式"/>
        <!-- 设置增强 -->
        <aop:增强方式 method="增强方法名" pointcut-ref="切点id"></aop:增强方式>
    </aop:aspect>
</aop:config>

二、切点表达式写法

execution([修饰符] 返回值类型 包名.类名.方法名(参数))
访问修饰符可以省略
返回值类型、包名、方法名可以使用星号(*)代表任意
包名与类名之间一个点.代表当前包下的类,两个点..表示当前包及其子包下的类
参数列表可以使用两个点..表示任意参数个数及类型的参数
示例:execution(* *..*.*(..)) 表示任意返回值类型的任意包及其子包下的任意类的任意参数的任意方法

三、5种(通知/增强)的类型

<aop:通知类型 method="切面类中的方法名" pointcut="切点表达式"></aop:通知类型>
各种增强除执行时机不同,标签不同和环绕增强多出一个参数,其他配置基本相同。

在这里插入图片描述

public class Aspect {
	// 前置增强
    public void TargetBefor() {
        System.out.println("Target befor method");
    }
	// 后置增强
    public void TargetAfter() {
        System.out.println("Target after method");
    }
    // 环绕增强 
    // 与其他增强不同,多了一个ProceedingJoinPoint参数用于调用切点以完成环绕增强
    public Object Around(ProceedingJoinPoint pjp) throws Throwable {
        System.out.println("环绕前");
        // 执行切电方法
        Object process = pjp.proceed();
        System.out.println("环绕后");
        return process;
    }
}
<bean id="AspectId" class="com.syx.Aspect"/>
<aop:config> 
        <!-- 声明切面 -->
    <aop:aspect ref="AspectId">
    	<!-- 设置后置增强 -->
        <aop:after method="TargetAfter" pointcut="execution(public void com.syx.TargetImpl.testTarget())"></aop:after>
        <!-- 设置前置增强 -->
    	<aop:before method="TargetBefor" pointcut="execution(public void com.syx.TargetImpl.testTarget())"></aop:before>
    	<!-- 设置环绕增强 -->
    	<aop:around method="Around" pointcut="execution(public void com.syx.TargetImpl.testTarget())"></aop:around>
    </aop:aspect>
</aop:config>

四、切点表达式的抽取

可以将切点表达式抽取出来为一个对象,设置增强时使用pointcut-ref去引用该切点表达式
使用切点表达式后,上面例子中的配置文件会变为如下形式:

<bean id="AspectId" class="com.syx.Aspect"/>
<aop:config> 
        <!-- 声明切面 -->
    <aop:aspect ref="AspectId">
    	<!-- 抽取切点表达式 -->
    	<aop:pointcut id="pointcutId" expression="execution(public void com.syx.TargetImpl.testTarget())"/>
    	<!-- 设置后置增强 -->
        <aop:after method="TargetAfter" pointcut-ref="pointcutId"></aop:after>
        <!-- 设置前置增强 -->
    	<aop:before method="TargetBefor" pointcut-ref="pointcutId"></aop:before>
    	<!-- 设置环绕增强 -->
    	<aop:around method="Around" pointcut-ref="pointcutId"></aop:around>
    </aop:aspect>
</aop:config>
  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Spring.xml是Spring框架中的配置文件,用于配置和管理应用程序中的各种组件和依赖关系。它是基于XML格式的,并且是Spring框架的核心配置文件之一。 在Spring.xml中,可以定义以下内容: 1. Bean定义:通过定义Bean,可以告诉Spring框架如何创建和管理对象。每个Bean都有一个唯一的ID和一个类的全限定名。可以通过配置构造函数参数、属性注入、依赖关系等来配置Bean。 2. 依赖注入:通过配置依赖注入,可以让Spring框架自动管理对象之间的依赖关系。可以使用构造函数注入、Setter方法注入或字段注入来实现依赖注入。 3. 切面配置:通过配置切面,可以实现面向切面编程(AOP)的功能。可以定义切点、通知和切面,并将它们应用到指定的目标对象上。 4. 属性配置:可以在Spring.xml配置一些属性,如数据库连接信息、日志级别等。这些属性可以在应用程序中通过Spring框架进行读取和使用。 5. 声明式事务管理:可以通过配置声明式事务管理,来实现对数据库事务的管理。可以指定事务传播行为、隔离级别等属性。 6. 其他配置:还可以在Spring.xml配置其他一些内容,如国际化资源、拦截器、视图解析器等。 总的来说,Spring.xml配置文件是一个非常重要的文件,用于定义和配置应用程序中的各种组件和功能。通过合理配置Spring.xml,可以实现对应用程序的灵活管理和扩展。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值