Spring 面向切面编程 XML 配置实现

ops/2025/3/13 4:49:07/

Spring 支持AOP ,并且可以通过XML配置来实现。

<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:aop="http://www.springframework.org/schema/aop"xmlns:context="http://www.springframework.org/schema/context"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/aophttp://www.springframework.org/schema/aop/spring-aop.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context.xsd"><!-- 定义目标对象 --><context:component-scan base-package="com" /><!-- 定义切面 --><bean id="logAspect" class="com.aspect.LogAspect"></bean><aop:config><aop:aspect ref="logAspect"><aop:pointcut expression="execution(* com.service.impl.*.*(..))" id="myAspect" /><aop:before  method="beforePrintLog" pointcut-ref="myAspect"></aop:before><aop:after  method="afterPrintLog" pointcut-ref="myAspect"></aop:after><aop:after-throwing  method="afterThrowingPrintLog" pointcut-ref="myAspect"></aop:after-throwing></aop:aspect></aop:config>
</beans>

相关标签介绍:

aop:config  注明开始配置aop ,是配置的开始标签

aop:aspect 配置切面   ref 属性是引用相关切面类Bean的id

aop:point-cut 定义切点  expression 是具体的表达式  id 是切点的标识

aop:before 定义前置通知  method是要执行的方法  pointcut-ref为引用的aop-point-cut 定义的id

aop:after 定义最终通知

aop:around 定义环绕通知

aop:after-throwing 定义返回异常的通知

aop:after-returning 定义正常返回的通知

切面类:

java">package com.aspect;import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;public class LogAspect {public void beforePrintLog() {System.out.println("LogAspectbeforePrintLog");}public void afterReturnPrintLog() {System.out.println("LogAspectafterReturnPrintLog");}public void afterThrowingPrintLog() {System.out.println("LogAspectafterThrowingPrintLog");}public void afterPrintLog() {System.out.println("LogAspectafterPrintLog");}public void aroundPrintLog() {System.out.println("aroundPrintLog");}
}

切点类必须是实现某个接口才行,SpringAOP代理实现机制包含Spring GGLIB 方式和JDK动态代理方式,默认的是JDK动态代理的方式,但是这种实现方式切点类我们的必须要实现某个接口 jdk9以及之后,切点类必须要实现接口

希望对你有所帮助!


http://www.ppmy.cn/ops/165330.html

相关文章

LINUX系统安装+添加共享目录

一、前言 Windows或mac系统中创建Linux工作环境是基于VMware和SL(Scientific Linux)&#xff0c;下面分别安装二者。 二、VMware软件安装及注册 1、双击VMware安装包 2、点击下一步 3、 勾选接受许可&#xff0c;并点击下一步 4、更改路径&#xff08;建议更改为容易找到的路…

蓝桥备赛(12)- 顺序表和 vector(下)

目录 一、动态顺序表 - vector 4.1 创造vector 4.2 size/empty 4.3 begin/end 4.4 push_back / pop_back 4.5 front / back 4.6 resize 4.7 clear 二、算法题 2.1 询问学号 2.2 寄包柜 2.3 移动零 2.4 颜色分类 2.5 合并两个有序数组 三 、拓展ACM模式 VS 核心代…

Spring Boot + MyBatis + MySQL:快速搭建CRUD应用

一、引言 1. 项目背景与目标 在现代Web开发中&#xff0c;CRUD&#xff08;创建、读取、更新、删除&#xff09;操作是几乎所有应用程序的核心功能。本项目旨在通过Spring Boot、MyBatis和MySQL技术栈&#xff0c;快速搭建一个高效、简洁的CRUD应用。我们将从零开始&#xff…

解决电脑问题(3)——显示器问题

当电脑显示器出现问题时&#xff0c;可以根据不同的故障现象采取相应的解决方法&#xff0c;以下是一些常见的情况及解决措施&#xff1a; 屏幕无显示 检查连接&#xff1a;首先检查显示器与电脑主机之间的视频连接线是否插好&#xff0c;确保两端的接口都牢固连接&#xff0c…

vulnhub靶场之【digitalworld.local系列】的snakeoil靶机

前言 靶机&#xff1a;digitalworld.local-snakeoil&#xff0c;IP地址为192.168.10.11 攻击&#xff1a;kali&#xff0c;IP地址为192.168.10.6 kali采用VMware虚拟机&#xff0c;靶机选择使用VMware打开文件&#xff0c;都选择桥接网络 这里官方给的有两种方式&#xff0…

python基础知识补充

一.区分列表、元组、集合、字典&#xff1a; 二.输出&#xff1a; <1>格式化输出字符串&#xff1a; 格式符号转换%s字符串%d有符号的十进制整数%f浮点数%c字符%u无符号十进制整数%o八进制整数%x十六进制整数&#xff08;小写ox&#xff09;%X十六进制整数(大写OX)%e科…

Windows10下docker desktop命令行操作指南(大部分也适用于Linux)

Windows系统最大的特点就是可视化操作&#xff0c;点点鼠标就能操作软件。但是在特殊的情况下&#xff0c;比如docker desktop图标点了之后没反应&#xff0c;但是看后台程序&#xff0c;它又已经运行了&#xff0c;这时候就要使用命令行来操作了。 针对这次情况&#xff0c;所…

云计算:虚拟化、容器化与云存储技术详解

在上一篇中,我们深入探讨了网络安全的核心技术,包括加密、认证和防火墙,并通过实际案例和细节帮助读者全面理解这些技术的应用和重要性。今天,我们将转向一个近年来迅速发展的领域——云计算。云计算通过提供按需访问的计算资源,彻底改变了IT基础设施的构建和管理方式。本…