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

  • 小米手机怎么分享wifi密码给朋友(小米手机怎么分身)

    小米手机怎么分享wifi密码给朋友(小米手机怎么分身)

  • 淘宝更改性别可以改几次(淘宝改了性别后可以检测出来吗)

    淘宝更改性别可以改几次(淘宝改了性别后可以检测出来吗)

  • 苹果11时间旁边有个箭头(苹果11时间旁边有个小飞机图标怎么关)

    苹果11时间旁边有个箭头(苹果11时间旁边有个小飞机图标怎么关)

  • 三星平板系统崩溃怎么办(三星平板变砖怎么办)

    三星平板系统崩溃怎么办(三星平板变砖怎么办)

  • 盒马鲜生可以微信支付吗(盒马鲜生可以微信付款吗)

    盒马鲜生可以微信支付吗(盒马鲜生可以微信付款吗)

  • airpodspro无法切换降噪模式(airpodspro无法切换模式)

    airpodspro无法切换降噪模式(airpodspro无法切换模式)

  • 电脑慢是什么原因造成的(电脑慢的主要原因是什么)

    电脑慢是什么原因造成的(电脑慢的主要原因是什么)

  • 小米手机录音快捷键(小米手机录音快捷键设置在哪里)

    小米手机录音快捷键(小米手机录音快捷键设置在哪里)

  • p30锁屏时间位置(华为p30pro锁屏时间位置移动)

    p30锁屏时间位置(华为p30pro锁屏时间位置移动)

  • airpods pro怎么充电啊(airpods pro充电怎么充)

    airpods pro怎么充电啊(airpods pro充电怎么充)

  • 苹果提示灯怎么开启(苹果提示灯怎么不亮)

    苹果提示灯怎么开启(苹果提示灯怎么不亮)

  • agsw09是华为什么型号(agsw09是华为多大尺寸)

    agsw09是华为什么型号(agsw09是华为多大尺寸)

  • 5g比4g费流量吗(5g比4g费流量吗?)

    5g比4g费流量吗(5g比4g费流量吗?)

  • 荣耀v20怎么清理后台(荣耀V20怎么清理垃圾)

    荣耀v20怎么清理后台(荣耀V20怎么清理垃圾)

  • oppo手机怎么导入联系人(oppo手机怎么导入vivo手机)

    oppo手机怎么导入联系人(oppo手机怎么导入vivo手机)

  • 天猫扣分什么时候清零(天猫扣分年底会清零吗)

    天猫扣分什么时候清零(天猫扣分年底会清零吗)

  • 快手有赞怎么开通(怎么在快手开通有赞怎么开店)

    快手有赞怎么开通(怎么在快手开通有赞怎么开店)

  • 微信号不存在是怎么回事(怎么可以有两个微信号)

    微信号不存在是怎么回事(怎么可以有两个微信号)

  • 苹果aqqstroe无法连接(苹果aqq无法登录)

    苹果aqqstroe无法连接(苹果aqq无法登录)

  • 抖音如何视频照片一起(抖音如何视频照片一起发)

    抖音如何视频照片一起(抖音如何视频照片一起发)

  • 苹果6p卡的厉害怎么办(苹果6p用着卡得很怎么办)

    苹果6p卡的厉害怎么办(苹果6p用着卡得很怎么办)

  • 微信打电话按了静音对方能知道吗(微信打电话了之后手机关机了会显示什么)

    微信打电话按了静音对方能知道吗(微信打电话了之后手机关机了会显示什么)

  • 苹果8支持5g网络吗(苹果支持5g网络的手机有哪些)

    苹果8支持5g网络吗(苹果支持5g网络的手机有哪些)

  • 手机浏览器缓存的视频在哪里(手机浏览器缓存文件夹位置)

    手机浏览器缓存的视频在哪里(手机浏览器缓存文件夹位置)

  • 手机怎么变扫码枪收款(手机怎么变扫码枪收款微信)

    手机怎么变扫码枪收款(手机怎么变扫码枪收款微信)

  • QQ绿钻升到5级有什么特权(qq绿钻5级是多少天)

    QQ绿钻升到5级有什么特权(qq绿钻5级是多少天)

  • qq情侣空间相恋天数怎么改(qq情侣空间相恋时间)

    qq情侣空间相恋天数怎么改(qq情侣空间相恋时间)

  • 华为护眼模式利弊(华为手机护眼模式原理)

    华为护眼模式利弊(华为手机护眼模式原理)

  • 探探被屏蔽多久解除(探探被屏蔽了怎么办)

    探探被屏蔽多久解除(探探被屏蔽了怎么办)

  • 支付国外佣金代扣代缴增值税
  • 一般纳税人资格证明
  • 模具费怎么入账
  • 房地产老项目简易计税方法备案
  • 出口退税勾选后多久可以申报退税
  • 拆迁补偿费返还政策
  • 视同内销补税的财务处理
  • 私企招残疾人可以辞职吗
  • 电子税务局怎么下载电子发票
  • 房地产企业如何进行市场细分
  • 公司过账什么意思
  • 会议收入包括哪些
  • 股权内部转让交增值税吗
  • 员工参加公司活动的好处
  • 押金放到哪个会计科目
  • 教育费附加抵免政策
  • 研发项目领原料加工成产品会计处理是怎样的?
  • 合同中止发票已入账怎么处理?
  • 开出的发票什么情况下需要补税?
  • 员工旅游费需要缴纳个人所得税吗
  • 小规模纳税人装修费用计入什么科目
  • 个人营业执照怎么注销网上申请流程
  • 发票红冲需要用发票打印吗
  • 生产负荷的计算
  • 合并报表的收入
  • 临时使用自建商品房是否需要缴纳房产税?
  • 关于研发支出的报告
  • 在window10中可以使用什么窗口
  • win11专业版企业版家庭版哪个玩游戏好
  • 财务报表包括哪三大报表?(多选)
  • w7系统怎么用
  • mysql 数据源
  • 域名服务费属于什么会计科目
  • 委托加工物资加工费
  • 基于php技术
  • 分配股利会稀释股权吗
  • php验证电子邮件格式
  • java项目报错
  • php二维数组按某个键值排序
  • 小企业会计准则适用于哪些企业
  • 滚动条基本样式有哪些
  • web前端面试题2021及答案
  • pytorch广播相乘
  • KITTI数据集可视化(一):点云多种视图的可视化实现
  • 投资性房地产在资产负债表中的列示
  • mysql分区语句
  • 个体户怎么报增值税
  • 土地增值税的相关问题
  • 个人福利要交税吗
  • 专利费用计入什么会计科目
  • 成本费用利润率越高越好吗
  • 跨年费用账务处理
  • mysql异常退出
  • 应交增值税明细账怎么填写样本
  • 专款专用需要缴税吗
  • 零申报是怎么回事
  • 营业利润是负数什么原因
  • 个体户怎么开对公账户
  • 房租已付未收发票可以待摊费用吗
  • 冲减坏账准备的金额怎么计算
  • sql server如何远程登录
  • 判断某个字段的值是否在指定的范围内
  • win7 组织
  • mac所有窗口最小化
  • win7系统IE浏览器一点就闪退
  • qdcsfs.exe - qdcsfs是什么进程 有何作用
  • win7应用程序无法正常启动
  • xp电脑开机自检怎么取消
  • win7一直处于开机界面
  • 批处理自动关闭
  • linux 查找后缀名文件
  • Android百度地图定位 sdk 地理围栏监听
  • centos创建shell脚本
  • js的异步解决方案有哪些
  • Django1.7+python 2.78+pycharm配置mysql数据库
  • 安卓音频分析软件
  • 点击电子税务局里的税务数字账户不跳转怎么回事
  • 会议服务的服务定位是什么
  • 企业所得税
  • 曲靖注册公司要哪些条件
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设