博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
十三 Spring的通知类型,切入表达式写法
阅读量:4647 次
发布时间:2019-06-09

本文共 3072 字,大约阅读时间需要 10 分钟。

Spring中通知类型:

  • 前置通知:目标方法执行之前进行操作,可以获得切入点信息        
  • 后置通知: 目标方法执行之后进行操作,可以获得方法的返回值
  • 环绕通知:在目标方法执行之前和之后进行操作,可以终止目标方法的执行
  • 异常抛出通知:在程序出现异常的时候进行的操作,可以返回异常信息
  • 最终通知:无论代码是否有异常,总是执行,相当于finally
  • 引介通知(了解即可):

 

切面类:

配置:

测试结果:

  

环绕通知:目标方法执行之前和之后进行操作(事务管理),可以阻止目标方法的执行

 

 

异常抛出通知:程序出现异常的时候进行的操作

 

最终通知:无论代码是否有异常,总是会执行

引介通知:(了解)

 

 applictionContext.xml

 

Java

1 package com.itheima.spring.demo3; 2  3 public class ProductDaoImpl implements ProductDao { 4  5     @Override 6     public void save() { 7         System.out.println("保存商品"); 8     } 9     @Override10     public void update() {11         System.out.println("修改商品");12     }13     @Override14     public void find() {15         System.out.println("查找商品");16 //        int i = 1/0;17     }18     @Override19     public String delete() {20         System.out.println("删除商品");21         return "赵洪";22 23     }24 25 }26 27 28 package com.itheima.spring.demo3;29 30 import org.aspectj.lang.ProceedingJoinPoint;31 32 /**33  * 切面:切入点和通知的组合34  * @author 李腾35  */36 public class MyAspectXml {37     /**38      * 前置通知39      * @param joinpoint40      */41     public void checkPri(){42         System.out.println("权限校验=======");43     }44     /**45      * 后置通知46      */47     public void writeLog(Object result){48         System.out.println("日志记录======"+result);49     }50     /**51      * 环绕通知52      * @throws Throwable 53      */54     public Object aruond(ProceedingJoinPoint joinPoint) throws Throwable{55         System.out.println("环绕通知=======");56         Object obj = joinPoint.proceed();57         System.out.println("环绕通知=======");58         return obj;59     }60     /**61      * 异常抛出通知62      */63     public void afterThrowing(Throwable ex){64         System.out.println("异常抛出通知"+ex.getMessage());65     }66     /**67      * 最终通知: 相当于finally代码块68      */69     public void after(){70         System.out.println("最终通知=====");71     }72 }73 74 75 package com.itheima.spring.demo3;76 import javax.annotation.Resource;77 78 import org.junit.Test;79 import org.junit.runner.RunWith;80 import org.springframework.test.context.ContextConfiguration;81 import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;82 /**83  *测试类84  */85 @RunWith(SpringJUnit4ClassRunner.class)86 @ContextConfiguration("classpath:applicationContext.xml")87 public class SpringDemo3 {88     89     @Resource(name="productDao")90     private ProductDao productDao;91     @Test92     public void demo1(){93         productDao.save();94         productDao.update();95         productDao.delete();96         productDao.find();97         98     }99 }

 

 切入点表达式语法:基于execution函数完成的

 

转载于:https://www.cnblogs.com/ltfxy/p/9882697.html

你可能感兴趣的文章
POJ-1128 Frame Stacking
查看>>
浏览器调试淘宝首页看到有趣的招聘信息
查看>>
ASP.NET Identity “角色-权限”管理 4
查看>>
[转][译]ASP.NET MVC 4 移动特性
查看>>
SurfaceView+MediaPlay的bug们
查看>>
网络表示学习总结
查看>>
完成评论功能
查看>>
far和near
查看>>
Python爬虫实战四之抓取淘宝MM照片
查看>>
2015 Multi-University Training Contest 1
查看>>
C#判断一个字符串是否是数字或者含有某个数字
查看>>
SVN使用指南
查看>>
【转载】掌 握 3 C ‧ 迎 接 亮 丽 职 涯
查看>>
爬取网站附件
查看>>
java基础图形界面和IO系统
查看>>
javascript学习笔记
查看>>
hdu 3996
查看>>
python第三十九课——面向对象(二)之初始化属性
查看>>
python学习笔记之函数装饰器
查看>>
FEM计算2D瞬态热传导方程
查看>>