基于xml的AOP实现
创始人
2024-05-31 09:55:40
0次

掌握基于XML的AOP实现,能够基于XML的方式实现Spring AOP

使用AOP代理对象的好处

因为Spring AOP中的代理对象由loC容器自动生成,所以开发者无须过多关注代理对象生成的过程,只需选择连接点、创建切面、定义切点并在XML文件中添加配置信息即可。Spring提供了一系列配置Spring AOP的XML元素。

1.配置Spring AOP的XML元素

 

2.配置切面

在Spring的配置文件中,配置切面使用的是元素,该元素会将一个已定义好的Spring Bean转换成切面Bean,因此,在使用元素之前,要在配置文件中先定义一个普通的Spring Bean。Spring Bean定义完成后,通过元素的ref属性即可引用该Bean。配置元素时,通常会指定id和ref两个属性。

元素的id属性和ref属性的描述

 

3.配置切入点

在Spring的配置文件中,切入点是通过元素来定义的。当
元素作为元素的子元素定义时,表示该切入点是全局的,它可被多个切面共享;当元素作为元素的子元素时,表示该切入点只对当前切面有效。定义元素时,通常会指定id、expression属性。

元素的id属性和expression属性描述

 

Spring AOP切入点表达式的基本格式

execution表达式各部分参数说明

 

4.配置通知

在Spring的配置文件中,使用元素配置了5种常用通知,分别为前置通知、后置通知、环绕通知、返回通知和异常通知。 

元素的常用属性

代码示例:

pom.xml

org.aspectjaspectjrt1.9.1runtimeorg.aspectjaspectjweaver1.8.7

package cn.hdc.demo3.dao.impl;import cn.hdc.demo3.dao.UserDao;public class UserDaoImpl implements UserDao {@Overridepublic void insert() {System.out.println("添加用户信息");}@Overridepublic void delete() {System.out.println("删除用户信息");}@Overridepublic void update() {System.out.println("更新用户信息");}@Overridepublic void select() {System.out.println("查询用户信息");}
}
package cn.hdc.demo3.dao;public interface UserDao {public void insert();public void delete();public void update();public void select();
}
package cn.hdc.demo3.entity;import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.ProceedingJoinPoint;//切面
public class XmlAdvice {/*** @param joinpoint 内部封装了切入点的相关信息*/public void before(JoinPoint joinpoint) {System.out.println("前置通知");System.out.println("目标类:" + joinpoint.getTarget());System.out.println("切入点的方法名:" + joinpoint.getSignature().getName());}public void after(JoinPoint joinPoint) {System.out.println("后置通知");}public void around(ProceedingJoinPoint pjp) throws Throwable {System.out.println("自定义环绕通知111,在切入点之前执行");//执行原有功能Object res = pjp.proceed();System.out.println("自定义环绕通知222,在切入点之后执行");//返回原有方法的返回值}public void after_returning() {System.out.println("返回通知,返回值结束才会执行(如果出现异常,不会执行)");}public void after_throwing(){System.out.println("异常通知,出现异常才会通知");}
}

 

 

 

 

相关内容

热门资讯

前端-session、jwt 目录:   (1)session (2&#x...
linux入门---制作进度条 了解缓冲区 我们首先来看看下面的操作: 我们首先创建了一个文件并在这个文件里面添加了...
关于测试,我发现了哪些新大陆 关于测试 平常也只是听说过一些关于测试的术语,但并没有使用过测试工具。偶然看到编程老师...
前缀和与对数器与二分法 1. 前缀和 假设有一个数组,我们想大量频繁的去访问L到R这个区间的和,...
nodejs:本地安装nvm实... 一、背景-使用不同版本node的原因 vue3+ts、nuxt3版本,node...
JAVA集合知识整理 Java集合知识整理 HashMap相关 HashMap的底层数据结构:jdk1.8之...
无刷直流电机介绍及单片机控制实... 无刷直流电机介绍及单片机控制实例前言基本概念优势与劣势使用寿命基本结构使用单片机控制实例电子调速器&...
fwdiary(2) dp2 1.传纸条  AcWing 275. 传纸条 - AcWing 走两条路,走一条最大的...
常用的DOS命令 常用的DOS命令 DOS(Disk Operating System,磁...
<C++> 类和对象(下) 1.const成员函数将const修饰的“成员函数”称之为const成员函数,cons...