位置: 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调出指定文章所有图片的代码(织梦怎么调用当前栏目下的文章)

  • 试玩游戏需要注意的技巧(游戏试玩怎么样)

    试玩游戏需要注意的技巧(游戏试玩怎么样)

  • 国家客户端怎么查核酸检测(国家客户端怎么投诉网贷)

    国家客户端怎么查核酸检测(国家客户端怎么投诉网贷)

  • QQ有耳朵能说明在线吗(qq的耳朵是啥)

    QQ有耳朵能说明在线吗(qq的耳朵是啥)

  • 动态壁纸一定要按压吗(动态壁纸一定要会员吗)

    动态壁纸一定要按压吗(动态壁纸一定要会员吗)

  • 快递单怎么隐藏手机号(快递单怎么隐藏中间四位)

    快递单怎么隐藏手机号(快递单怎么隐藏中间四位)

  • 华为分身怎么弄出来(华为分身怎么弄除下面的小图标)

    华为分身怎么弄出来(华为分身怎么弄除下面的小图标)

  • 闲鱼不发货多久自动取消订单(闲鱼不发货多久自动退货)

    闲鱼不发货多久自动取消订单(闲鱼不发货多久自动退货)

  • 苹果11电信信号不好(苹果11电信信号满格为啥是1x拨打电话自动挂断)

    苹果11电信信号不好(苹果11电信信号满格为啥是1x拨打电话自动挂断)

  • xp最高支持几代cpu

    xp最高支持几代cpu

  • vivo手机卡顿怎么办(Vivo手机卡顿怎么解决)

    vivo手机卡顿怎么办(Vivo手机卡顿怎么解决)

  • iphonex支持5gwifi吗(iphonex支持wifi6吗)

    iphonex支持5gwifi吗(iphonex支持wifi6吗)

  • 华为jkm一al00是什么型号(华为jkm-al00是什么)

    华为jkm一al00是什么型号(华为jkm-al00是什么)

  • 内存超频用xmp还是手动(内存超频性能)

    内存超频用xmp还是手动(内存超频性能)

  • 苹果8p屏幕怎么老是亮(苹果8p屏幕怎么拆)

    苹果8p屏幕怎么老是亮(苹果8p屏幕怎么拆)

  • mac系统如何卸载(mac系统如何卸载软件)

    mac系统如何卸载(mac系统如何卸载软件)

  • 快手直播竞猜在哪(快手主播竞猜哪里竞猜)

    快手直播竞猜在哪(快手主播竞猜哪里竞猜)

  • XR铝制边框掉漆么(iphone铝合金边框掉漆)

    XR铝制边框掉漆么(iphone铝合金边框掉漆)

  • 苹果11pro和11的区别(苹果11pro与11哪个好)

    苹果11pro和11的区别(苹果11pro与11哪个好)

  • 爱奇艺预约在哪里查看(爱奇艺预约哪台设备登录)

    爱奇艺预约在哪里查看(爱奇艺预约哪台设备登录)

  • 苹果简短的验证空白(苹果简短的验证刷不出来)

    苹果简短的验证空白(苹果简短的验证刷不出来)

  • oppoa5桌面时间和天气怎么设置(oppoa5手机桌面时间显示设置)

    oppoa5桌面时间和天气怎么设置(oppoa5手机桌面时间显示设置)

  • 如何使用excel画曲线图(如何使用excel画二极管元件伏安特性曲线图)

    如何使用excel画曲线图(如何使用excel画二极管元件伏安特性曲线图)

  • 怎么看qq加好友的时间(怎么看qq加好友时候的验证信息)

    怎么看qq加好友的时间(怎么看qq加好友时候的验证信息)

  • Firefox.exe是什么进程 Firefox.exe相关内容详细介绍(firefox有什么用)

    Firefox.exe是什么进程 Firefox.exe相关内容详细介绍(firefox有什么用)

  • 显卡是4G的1050TI好还是3G的1060好(1050ti 4g显卡)

    显卡是4G的1050TI好还是3G的1060好(1050ti 4g显卡)

  • 工业企业取得土地使用权专用发票可以抵扣吗?
  • 公司车辆过户给个人需要交多少税
  • 其他债权投资是资产还是负债
  • 工资走公账和私账哪个好
  • 国际货物运输07113
  • 记账凭证账务处理程序步骤
  • 收到公司退货会计分录
  • 转款账户错误退款的账务处理
  • 进口内销是什么意思
  • 事业单位为职工代扣代缴个人所得税
  • 营改增后应付职工薪酬如何核算个人所得税?
  • 从个人出开进的房租租赁发票可以抵扣几个点?
  • 3%税率是一般纳税人还是小规模
  • 个体工商户怎么注册
  • 2020退税时间超过了怎么办
  • 购买垃圾袋的会计分录
  • 物业公司场地租赁费怎么开票
  • 投标报价里税金和税率是一个吗
  • 附加税退税如何做账
  • 无形资产摊销方法应当反映其经济利益
  • 企业注销固定资产处理
  • 2019年城建税减免政策
  • 商品残次品怎样定义
  • 进项税额加计扣除分录
  • 坏账核销后又收回的,增加坏账准备,并转入当期损益
  • 工程结算如何进行
  • 商贸企业零部件出口退税政策
  • 取得土地所有权范围内的树如何处理
  • 用银行存款支付明年的财产保险费
  • win10系统电脑怎么连接wifi
  • 建筑企业项目部开户
  • PHP:mcrypt_ofb()的用法_Mcrypt函数
  • 新公司30天内未办理税务登记
  • 研发费用加计扣除新税收政策
  • 简单的随机乱码怎么解决
  • 用vue做的登录界面
  • React hooks中 useState踩坑-=--异步问题
  • 企业合并的合并范围
  • yii2 页面底部加载css和js的技巧
  • 公章是否必须备案
  • tf fans club
  • opencv的函数
  • c++评测
  • 帝国cms目录
  • 餐饮业采购管理
  • 采购入库单怎么生成
  • wndgui降级
  • 临时工工资账务处理该怎么进行
  • 一次性发放的年终奖金应按工资薪金代扣代缴个税
  • 盘盈固定资产如何处理
  • 资产负债表中其他流动资产包括哪些
  • 确认收入的时点包括
  • 待抵扣进项税额转出会计分录
  • 无法收回离职员工合法吗
  • 关联企业是如何运作的
  • 收到股东投资如何做账
  • 企业收到的政府补助属于
  • 其它应付款核销法律意见书
  • 增加的实收资本印花税
  • 固定资产净残值最后怎么处理
  • 外包会计注意事项
  • 直接成本包括哪些
  • 建账怎么建
  • mysql 注入漏洞
  • windowsxp我的电脑怎么调出来
  • wim10飞行模式
  • unity3d4个脚本
  • jQuery实现彩带延伸效果的网页加载条loading动画
  • 优质安卓应用
  • 怎么做小地图图片呢
  • angular nz
  • vue mint-ui 官网
  • jquery.cookie.js用法实例详解
  • JavaScript+html5 canvas制作的百花齐放效果完整实例
  • 一不小心做错事男朋友就开始说我
  • 房屋出租到哪里挂出去
  • 税务师如何执业
  • 建设工程勘察设计单位可跨部门跨地区承揽勘察设计业务
  • 社保每个月都要交吗,不交了会怎么样
  • 湖北航天金税盘服务器地址
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设