位置: IT常识 - 正文

Spring(三)-AOP

编辑:rootadmin
1、名词理解 切面(Aspect): 含有前置通知,后置通知,返回通知,异常抛出通知,环绕通知等方法的类; 通知(Advice): 对原方法进行添加处理(如日志等)的方法; 切入点(PointCute): 通知需要在哪些方法上执行的表达式;(可以唯一匹配或模糊匹配); 连接点(JoinPoint): ... 1、名词理解切面(Aspect):含有前置通知,后置通知,返回通知,异常抛出通知,环绕通知等方法的类;通知(Advice):对原方法进行添加处理(如日志等)的方法;切入点(PointCute):通知需要在哪些方法上执行的表达式;(可以唯一匹配或模糊匹配);连接点(JoinPoint):与切入点匹配的具体执行的方法;目标(Target):原业务类(主要 是核心代码);代理(Proxy):生成的代理类(包含原业务类的 核心代码 和 通知里面的代码);2、前置通知2.1 jar<properties><spring.version>4.3.18.RELEASE</spring.version></properties><dependencies> <!-- spring-beans begin --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-beans</artifactId> <version>${spring.version}</version> </dependency> <!-- spring-beans end --> <!-- spring-core begin --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version>${spring.version}</version> </dependency> <!-- spring-core end --> <!-- spring-context begin --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>${spring.version}</version> </dependency> <!-- spring-context end --> <!-- spring-expression begin --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-expression</artifactId> <version>${spring.version}</version> </dependency> <!-- spring-expression end --> <!-- spring-aspects begin --> <!-- maven项目中,使用aop的AspectJ框架,只需要增加此依赖,自动添加依赖aspectjweaver(包含了aspectjrt)--> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-aspects</artifactId> <version>${spring.version}</version> </dependency> <!-- spring-aspects end --></dependencies>2.2 切入点

推荐整理分享Spring(三)-AOP,希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:,内容如对您有帮助,希望把文章链接给更多的朋友!

通知需要在哪些方法上执行的表达式;(可以唯一匹配或模糊匹配);

2.2.1 唯一匹配execution(public int com.kgc.spring.aspectj.ArithmeticCalculator.add(int ,int ))

execution(修饰符 返回值类型 方法全类名)

2.2.2 模糊匹配execution(* com.kgc.spring.aspectj.*.*(..)

通用切入点表达式含义:

第一个*:代表任意的修饰符,任意的返回值类型;

Spring(三)-AOP

第二个*:代表任意的类;

第三个*:代表任意的方法;

. . :代表任意的类型和个数的形参;

2.2.3 可重用切入点表达式

其他地方直接应用此方法即可;

//重用切入点表达式@Pointcut( "execution(* com.kgc.spring.aspectj.*.*(..))")public void joinPointcut(){}//同一个类中引用@Before("joinPointcut()")@After("joinPointcut()")//其他类中引用(方法全类名)@Before("com.kgc.spring.aspectj.LogAspect.joinPointcut()")2.3 JoinPoint 和 ProceedingJoinPoint2.3.1 JoinPoint 对象

JoinPoint对象封装了SpringAop中切面方法的信息,在切面方法中添加JoinPoint参数,就可以获取到封装了该方法信息的JoinPoint对象。 常用api:

方法名功能Signature getSignature();获取封装了署名信息的对象,在该对象中可以获取到目标方法名,所属类的Class等信息Object[] getArgs();获取传入目标方法的参数对象Object getTarget();获取被代理的对象Object getThis();获取代理对象2.3.2 ProceedingJoinPoint对象

ProceedingJoinPoint对象是JoinPoint的子接口,该对象只用在@Around的切面方法中 添加了 两个方法.

方法名功能Object proceed() throws Throwable执行目标方法Object proceed(Object[] var1) throws Throwable传入的新的参数去执行目标方法2.4 @Before2.4.1 接口

ArithmeticCalculator

public interface ArithmeticCalculator { //加 int add(int m,int n); //减 int sub(int m,int n); //乘 int nul(int m,int n); //除 int div(int m,int n);}2.4.2 实现类

ArithmeticCalculatorImpl

@Service("arithmeticCalculator")//起别名,方便单元测试,根据别名,从容器中获取public class ArithmeticCalculatorImpl implements ArithmeticCalculator { @Override public int add(int m, int n) { return m + n; } @Override public int sub(int m, int n) { return m - n; } @Override public int nul(int m, int n) { return m*n; } @Override public int div(int m, int n) { System.out.println("====== 执行 div 方法 ======"); return m/n; }}2.4.3 @Before 前置通知

在目标方法执行前,自动执行此方法(通过代理实现);

@Component //
本文链接地址:https://www.jiuchutong.com/zhishi/310192.html 转载请保留说明!

上一篇:OpenGL 曝光度调节(opengl环境光参数)

下一篇:织梦DEDECMS调出指定文章所有图片的代码(织梦怎么调用当前栏目下的文章)

  • 苹果8p怎么取消自动续费(苹果8p怎么取消屏幕上的小圆球)

    苹果8p怎么取消自动续费(苹果8p怎么取消屏幕上的小圆球)

  • 微信没有漂流瓶吗(微信怎么没有漂流瓶功能了)

    微信没有漂流瓶吗(微信怎么没有漂流瓶功能了)

  • 微信怎么查看把谁免打扰了(微信怎么查看把我删除的人)

    微信怎么查看把谁免打扰了(微信怎么查看把我删除的人)

  • 变频器复位键是哪一个(变频器复位键是哪个键)

    变频器复位键是哪一个(变频器复位键是哪个键)

  • oppor11相机声音怎么关闭(oppo r 11手机照相机声音在哪里关)

    oppor11相机声音怎么关闭(oppo r 11手机照相机声音在哪里关)

  • 微博能查出对方身份吗(微博查出对方手机号软件)

    微博能查出对方身份吗(微博查出对方手机号软件)

  • 苹果玩游戏发烫很严重怎么办(苹果玩游戏发烫掉帧)

    苹果玩游戏发烫很严重怎么办(苹果玩游戏发烫掉帧)

  • 苹果手机指纹坏了能修吗(苹果手机指纹坏了是什么原因)

    苹果手机指纹坏了能修吗(苹果手机指纹坏了是什么原因)

  • 蓝牙耳机必须带盒子才能用吗(蓝牙耳机必须带两个才能听到吗)

    蓝牙耳机必须带盒子才能用吗(蓝牙耳机必须带两个才能听到吗)

  • 苹果手机4g网络卡顿(苹果手机4G网络怎么调)

    苹果手机4g网络卡顿(苹果手机4G网络怎么调)

  • 三星9611相当于骁龙多少(三星9611cpu)

    三星9611相当于骁龙多少(三星9611cpu)

  • 小米10手机多少倍变焦(小米10手机多少克)

    小米10手机多少倍变焦(小米10手机多少克)

  • 苹果6指纹解锁不灵敏怎么办(苹果6指纹解锁在哪里)

    苹果6指纹解锁不灵敏怎么办(苹果6指纹解锁在哪里)

  • 怎样查支付宝一年消费(怎样查支付宝一年前的转账记录)

    怎样查支付宝一年消费(怎样查支付宝一年前的转账记录)

  • 华为荣耀20和20s的区别(华为荣耀20和20s屏幕一样吗)

    华为荣耀20和20s的区别(华为荣耀20和20s屏幕一样吗)

  • 京东怎么撤销退款申请(京东怎么撤销退款申请苹果手机)

    京东怎么撤销退款申请(京东怎么撤销退款申请苹果手机)

  • 抖音已重置怎么恢复(抖音重置怎么弄)

    抖音已重置怎么恢复(抖音重置怎么弄)

  • airpods支持华为吗(airpods可以用华为)

    airpods支持华为吗(airpods可以用华为)

  • 拼多多介入后果是什么(拼多多介入卖家会赢吗)

    拼多多介入后果是什么(拼多多介入卖家会赢吗)

  • 荣耀v20相机有变焦吗(荣耀v20为什么拍照颜色失真)

    荣耀v20相机有变焦吗(荣耀v20为什么拍照颜色失真)

  • pr如何安装转场(pr如何安装转场插件)

    pr如何安装转场(pr如何安装转场插件)

  • 如何打造APP开发后台系统(如何打造app开发平台)

    如何打造APP开发后台系统(如何打造app开发平台)

  • 全民k歌拉黑对方还能进你主页吗(全民k歌拉黑对方还能私信吗)

    全民k歌拉黑对方还能进你主页吗(全民k歌拉黑对方还能私信吗)

  • 如何用WPS自动生成目录(如何用wps自动生成序号)

    如何用WPS自动生成目录(如何用wps自动生成序号)

  • 如何把照片变成表情包(如何把照片变成卡通图)

    如何把照片变成表情包(如何把照片变成卡通图)

  • 金猪储蓄罐悬浮窗怎么关闭(金猪储蓄罐简笔画)

    金猪储蓄罐悬浮窗怎么关闭(金猪储蓄罐简笔画)

  • 织梦DedeCMS转换WordPress方法(dede织梦怎么转成zblog)

    织梦DedeCMS转换WordPress方法(dede织梦怎么转成zblog)

  • 什么合同属于有效合同
  • 个体工商户要报工商年报吗?
  • 合伙企业当年盈亏怎么算
  • 公司账户钱能全部转走吗
  • 转让不动产销项税
  • 废品销售是否缴纳增值税
  • 房屋租赁发票票样
  • 税费退库怎么做凭证
  • 公司的社保缴费基数不是工资数
  • 提供劳务企业所得税纳税义务发生时间
  • 农产品收购发票可以跨区域开吗
  • 营改增以前土地交易应交税费
  • 应缴所得税包括哪些税种
  • 房企视同买断销售的所得税处理
  • 企业捐赠不动产 会计分录
  • 展会门票费计入什么科目
  • 验资资金转出如何做账
  • 事业单位存货包括哪些
  • 补交增值税如何入账
  • 企业营改增对企业税负影响分析
  • 自由职业者知乎
  • 作废章盖在哪个位置
  • 非专利技术转让合同印花税
  • 用友软件报表公式
  • vue项目如何搭建
  • 发票登记薄的式样
  • 租赁合同维修费用
  • 应付股利属于什么科目
  • php 赋值
  • php下载远程文件到服务器
  • webpack配置publicpath
  • 【机器学习】前置知识:矩阵的表示与定义 | Identity 身份矩阵 | 逆矩阵和转置 | 标量乘法
  • 投资房地产的后续计量有哪些
  • 离职补偿金可以拖欠么
  • 小微企业能申请留抵退税吗?
  • 企业销售旧固定产品
  • 员工出差过程中意外死亡算工伤吗
  • 钢筋增值税专票几个点
  • 暂估入库多了怎么办
  • 不动产进项税额抵扣从什么时候开始
  • 房地产企业年报数据
  • 水电费没有发票吗
  • 不得扣除的税金啥意思
  • 递延所得税如何理解
  • 固定资产处置当月需要计提折旧吗
  • 去年多计提的企业所得税怎么调整
  • 养老保险如何记算
  • 个税起征点调整最新消息
  • 我国税收税类中的流转税
  • 加油费用属于什么科目明细
  • 银行帐户维护费怎么算
  • 报销单填写发票第几页交给财务
  • 红字信息表状态b900077
  • 开票软件服务费计入什么会计科目
  • 基本户注销了还能查询流水吗
  • 查账征收的个体户怎么交个税
  • 补记式余额调节法怎么写项目
  • sql以级联的方式删除表
  • sql server 复制数据库具体操作图解
  • MySQL5.7 windows二进制安装教程
  • unins000.exe - unins000是什么意思
  • igs文件是什么文件
  • 本地hosts文件存在问题
  • win7如何升级win11系统
  • win8可以装pr2018吗
  • nodejs入门教程
  • div如何排版
  • javascript 二维码
  • unity如何调整界面
  • 判断文件是否存在 java
  • 批处理call命令
  • nodejs sleep方法
  • python调用python代码
  • javascript入门教程
  • flask框架下使用scrapy框架
  • 天津税务局网上办税厅
  • 税务登录 河北省地方税务局
  • 上期留底税额怎么查
  • 2008土地管理办法
  • 福建莆田社保局在哪里
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设