基于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("异常通知,出现异常才会通知");}
}

 

 

 

 

相关内容

热门资讯

【NI Multisim 14...   目录 序言 一、工具栏 🍊1.“标准”工具栏 🍊 2.视图工具...
银河麒麟V10SP1高级服务器... 银河麒麟高级服务器操作系统简介: 银河麒麟高级服务器操作系统V10是针对企业级关键业务...
不能访问光猫的的管理页面 光猫是现代家庭宽带网络的重要组成部分,它可以提供高速稳定的网络连接。但是,有时候我们会遇到不能访问光...
AWSECS:访问外部网络时出... 如果您在AWS ECS中部署了应用程序,并且该应用程序需要访问外部网络,但是无法正常访问,可能是因为...
Android|无法访问或保存... 这个问题可能是由于权限设置不正确导致的。您需要在应用程序清单文件中添加以下代码来请求适当的权限:此外...
北信源内网安全管理卸载 北信源内网安全管理是一款网络安全管理软件,主要用于保护内网安全。在日常使用过程中,卸载该软件是一种常...
AWSElasticBeans... 在Dockerfile中手动配置nginx反向代理。例如,在Dockerfile中添加以下代码:FR...
AsusVivobook无法开... 首先,我们可以尝试重置BIOS(Basic Input/Output System)来解决这个问题。...
ASM贪吃蛇游戏-解决错误的问... 要解决ASM贪吃蛇游戏中的错误问题,你可以按照以下步骤进行:首先,确定错误的具体表现和问题所在。在贪...
月入8000+的steam搬砖... 大家好,我是阿阳 今天要给大家介绍的是 steam 游戏搬砖项目,目前...