基于注解配置的AOP

注解方式AOP基本使用

Spring的AOP也提供了注解方式配置,使用相应的注解代替之前的xml配置。

xml配置:

    <aop:config>
<!--        配置切入点  目的是指定哪些方法增强--><aop:pointcut id="myPointCut1" expression="execution(void com.hsf.service.Impl.UserServiceImpl.show01())"/><aop:aspect ref="advice"><aop:before method="beforeAdvice" pointcut-ref="myPointCut1"></aop:before></aop:aspect></aop:config>

注解配置:

<!--    注解包扫描--><context:component-scan base-package="com.hsf"></context:component-scan>
<!--    配置AOP注解自动代理  --><aop:aspectj-autoproxy></aop:aspectj-autoproxy>
@Component("myadvice")
@Aspect
public class MyAdvice {//增强方法@Before("execution(void com.hsf.service.Impl.UserServiceImpl.show01())")public void beforeAdvice(JoinPoint joinPoint){System.out.println("当前目标对象"+joinPoint.getTarget());System.out.println("表达式"+joinPoint.getStaticPart());System.out.println("前置的增强");}

 

注解方式AOP配置详解
//前置增强方法@Before("execution(void com.hsf.service.Impl.UserServiceImpl.show01())")//后置通知@AfterReturning(pointcut = "execution(void com.hsf.service.Impl.UserServiceImpl.show01())")//环绕通知@Around( "execution(void com.hsf.service.Impl.UserServiceImpl.show01())")//异常抛出通知@AfterThrowing(pointcut ="execution(void com.hsf.service.Impl.UserServiceImpl.show01())", throwing = "e")//最终通知@After("execution(void com.hsf.service.Impl.UserServiceImpl.show01())")

  切点表达式的抽取:

  //切点表达式的抽取@Pointcutpublic void myPointCut(){}

调用抽取的表达式: 

 配置类,全注解开发

@Configuration
@ComponentScan("com.hsf")//  <context:component-scan base-package="com.hsf"></context:component-scan>
@EnableAspectJAutoProxy//<aop:aspectj-autoproxy></aop:aspectj-autoproxy>
public class SpringConfig {
}

 

注解方式AOP原理剖析

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/175577.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[Linux] 正则表达式及grep和awk

一、正则表达式 1.1 什么是正则表达式 正则表达式是一种用于匹配和操作文本的强大工具&#xff0c;它是由一系列字符和特殊字符组成的模式&#xff0c;用于描述要匹配的文本模式。 正则表达式可以在文本中查找、替换、提取和验证特定的模式。 正则表达式和通配符的区别 正则…

Isaac Sim:使用 Replicator Composer 生成合成数据

训练感知模型需要大量多样的数据集。组装这些数据集可能耗时耗钱又危险&#xff0c;甚至在某些极端情况下无法进行。利用 Isaac Sim 的 Omniverse Replicator&#xff0c;开发者可以启动训练任务。在项目的早期阶段&#xff0c;合成数据可以加速概念验证或验证 ML 工作流。在开…

Docker 概述与安装

文章目录 1. Docker简介2. 传统虚拟机和容器3. Docker运行速度快的原因4. Docker软件4.1 Docker镜像4.2 Docker容器4.3 Docker仓库 5. Docker架构6. CentOS安装Docker6.1 卸载旧版本6.2 配置yum资源库6.3 安装Docker引擎6.4 启动docker引擎6.5 设置开机自启 7. 卸载Docker8. 运…

OpenCV完结篇——计算机视觉(人脸识别 || 车牌识别)

文章目录 Haar人脸识别方法Haar识别眼鼻口HaarTesseract进行车牌识别深度学习基础知识dnn实现图像分类 Haar人脸识别方法 scaleFactor调整哈尔级联器的人脸选框使其能框住人脸 官方教程指路 每个特征都是通过从黑色矩形下的像素总和减去白色矩形下的像素总和获得的单个值 级…

代理IP可以用于哪些实际场景?遇到问题如何解决

随着互联网的普及和网络应用的广泛使用&#xff0c;代理IP已成为许多人工作和生活中不可或缺的一部分。代理IP可以用于多种实际场景&#xff0c;并在遇到问题时提供有效的解决方案。下面将详细介绍代理IP的实际应用场景及遇到问题时的解决方法。 一、代理IP的实际应用场景 1. 网…

开源运维监控系统-Nightingale(-夜莺)应用实践(未完)

一、前言 某业务系统因OS改造,原先的Zabbix监控系统推倒后未重建,本来计划用外部企业内其他监控系统接入,后又通知需要自建才能对接,考虑之前zabbix的一些不便,本次计划采用一个类Prometheus的监控系统,镜调研后发现Nightingale兼容Prometheus,又有一些其他功能增强,又…

Docker Compose;docker-compose;docker compose

(一) Docker Compose | 菜鸟教程 --> --> --> -->

ESP32-Web-Server编程-建立第一个网页

ESP32-Web-Server编程-建立第一个网页 HTTP 简述 可能你每天都要刷几个短视频&#xff0c;打开几个网页来娱乐一番。当你打开一个网络上的视频或者图片时&#xff0c;其实际发生了下面的流程&#xff1a; 其中客户端就是你的浏览器啦&#xff0c;服务器就是远程一个存放视频或…

查询word文档的GUID码

通过word中自带的VBA脚本&#xff0c;Application.ProductCode 方法返回全球唯一标识符 (GUID)。 &#xff08;不同word查出来的码都一样&#xff0c;貌似微软把这个接口功能给禁了&#xff09; 语法 expression. ProductCode 表达式是必需的。 一个代表 Application 对象的…

【JAVA学习笔记】72 - 满汉楼 - 餐饮管理系统

项目代码 https://github.com/yinhai1114/Java_Learning_Code/tree/main/IDEA_Chapter26 一、需求说明 满汉楼项目功能多&#xff0c;界面复杂&#xff0c;涉及到复杂的awt和swing技术和事件编程&#xff0c;做如下调整: 1.去掉界面和事件处理(工作中使用很少)&#xff0c;使…

数据库之存储过程

优点 存储过程只在创造时进行编译&#xff0c;以后每次执行存储过程都不需再重新编译&#xff0c;而一般SQL语句每执行一次就编译一次,所以使用存储过程可提高数据库执行速度&#xff0c;效率要比T-SQL语句高。当对数据库进行复杂操作时&#xff0c;可将此复杂操作用存储过程封…

如何在VS2022上的MFC项目中操作Excel(VS2010、VS2012、VS2015、VS2017、VS2019使用方法一样)

先决条件 本机安装office2003、2007、2010、2016及以后版本&#xff0c;总之必须安装office导入Excel库文件&#xff0c;导入方式可参考&#xff1a; 如何在vs2017及以前版本(vs2010、vs2015)上添加 添加类型库中的MFC类如何在vs2019及以后版本(如vs2022)上添加 添加ActiveX控…

flutter布局详解及代码示例(上)

布局 基本布局 Row&#xff08;水平布局&#xff09;&#xff1a;在水平&#xff08;X轴&#xff09;方向上排列子widget的列表。Column&#xff08;垂直布局&#xff09;&#xff1a;在垂直&#xff08;Y轴&#xff09;方向上排列子widget的列表。Stack&#xff08;可重叠布…

有一种浪漫,叫接触Linux

大家好&#xff0c;我是五月。 嵌入式开发 嵌入式开发产品必须依赖硬件和软件。 硬件一般使用51单片机&#xff0c;STM32、ARM&#xff0c;做成的产品以平板&#xff0c;手机&#xff0c;智能机器人&#xff0c;智能小车居多。 软件用的当然是以linux系统为蓝本&#xff0c…

顺子日期(14)

顺着日期 public class Main {public static void main(String[] args) {int res 0;//2022年int[] days new int[] {31,28,31,30,31,30,31,31,30,31,30,31};//31,28,31,30,31,30,31,31,30,31,30,31//一三五七八十腊//构造2022年每一天的日期yyyymmddStringBuffer date new…

Redis-性能优化

Redis缓存设计 缓存与数据库双写不一致 在大并发下&#xff0c;同时操作数据库与缓存会存在数据不一致性问题 1、双写不一致情况&#xff0c;线程1写数据库&#xff0c;[线程2写数据库&#xff0c;并更新缓存]&#xff0c;线程1更新缓存&#xff0c;此时旧缓存覆盖了新的 2…

json_encode() 返回 false

当 json_encode() 返回 false 时&#xff0c;表示 JSON 编码过程失败。这通常是因为要编码的数据包含了无效的 UTF-8 字符&#xff0c;而默认情况下 json_encode() 会对无效的 UTF-8 字符进行严格的处理 通过添加 JSON_INVALID_UTF8_IGNORE 选项&#xff0c;你告诉 json_encod…

Linux详解——常用命令(一)

目录 一、Linux中命令格式: 1.ls 命令 2.操作文件命令 3.网络相关命令 4.tar命令 5.systemctl 服务命令 一、Linux中命令格式: 命令 -选项 参数 如: ls -l /usr 注意:在linux中命令严格区分大小写 1.ls 命令 ls 显示文件和目录列表 (list) 常用参数: …

Miniconda虚拟环境安装(chatglm2大模型安装步骤二)

1.服务器配置 服务器系统&#xff1a;Centos7.9 x64 显卡&#xff1a;RTX3090 &#xff08;24G&#xff09; 2.安装环境 2.1 检查conda是否安装 输入命令&#xff1a;conda -V 如果显示conda 4.7.12&#xff0c;说明已经有不需要安装 2.2 安装Miniconda 在家目录建一个mi…

【计算机网络笔记】ARP协议

系列文章目录 什么是计算机网络&#xff1f; 什么是网络协议&#xff1f; 计算机网络的结构 数据交换之电路交换 数据交换之报文交换和分组交换 分组交换 vs 电路交换 计算机网络性能&#xff08;1&#xff09;——速率、带宽、延迟 计算机网络性能&#xff08;2&#xff09;…