用于记录日志的工具类,它里面提供了公共的代码

/*用于记录日志的工具类,它里面提供了公共的代码*/
public class Logger {/*前置通知*/public void beforePrintLog(){System.out.println("(前置通知)Logger类中的beforePrintLog方法开始记录日志了");}/*后置通知*/public void afterReturningPrintLog(){System.out.println("(后置通知)Logger类中的afterReturningPrintLog方法开始记录日志了");}/*异常通知*/public void afterThrowingPrintLog(){System.out.println("(异常通知)Logger类中的afterThrowingPrintLog方法开始记录日志了");}/*最终通知*/public void afterPrintLog(){System.out.println("(最终通知)Logger类中的afterPrintLog方法开始记录日志了");}
}

配置spring的IOC

<!--配置spring的IOC-->
<bean id="accountService" class="com.yujie.service.impl.AccountServiceImpl"></bean><!--配置logger类-->
<bean id="logger" class="com.yujie.utils.Logger"></bean>
<!--配置AOP-->
<aop:config><!--配置切面--><aop:aspect id="logAdvice" ref="logger"><!--配置前置通知--><aop:before method="beforePrintLog" pointcut="execution(* com.yujie.service.impl.*.*(..))"></aop:before><!--配置后置通知--><aop:after-returning method="afterReturningPrintLog" pointcut="execution(* com.yujie.service.impl.*.*(..))"></aop:after-returning><!--配置异常通知--><aop:after-throwing method="afterThrowingPrintLog" pointcut="execution(* com.yujie.service.impl.*.*(..))"></aop:after-throwing><!--配置最终通知--><aop:after method="afterPrintLog" pointcut="execution(* com.yujie.service.impl.*.*(..))"></aop:after></aop:aspect>
</aop:config>


没有异常通知,是因为我们的程序在执行的过程中没有产生异常,所以不会有异常通知。
如果修改saveAccount的方法

public void saveAccount() {System.out.println("执行了保存");int i=1/0;
}

再次进行


后置通知没有了。异常通知有了
前置通知是在切入点方法执行之前执行
后置通知是在切入点方法正常执行之后执行
异常通知在切入点方法执行产生异常之后执行
最终通知无论切入点方法是否正常执行它都会在其后面执行
后置通知和异常通知永远只能执行一个。

比如事务要么提交,要么回滚,不可能既提交和回滚

Spring框架----四种常用通知类型相关推荐

  1. spring框架三种类型项目实现--基础maven类型、纯注解开发型、aop结合注解开发型

    spring框架实现 1.基础maven类型 1.开发准备--pom.xml添加spring依赖 2.创建properties文件 还是三层架构开发 3.domain层创建实体类javabean 4. ...

  2. java四种线程池类型以及可选择的阻塞队列

    之前笔记有记录java线程池的拒绝策略,回顾一下线程池的处理任务的优先级: 先考虑corePoolSize.任务队列(缓冲队列)workQueue.最大线程maximumPoolSize,如果三者都满 ...

  3. it有啥好咨询的_蓝盟浅析,IT外包的四种常用方式

    IT外包服务主要分为IT运维外包和软件开发外包,对于软件开发外包主要偏于研发类型,在本文中主要讨论IT运维外包. 上海蓝盟认为,IT运维外包主要包含IT服务外包.IT采购.弱电工程.系统集成和云服务等 ...

  4. Spring的四种注入方式

    Spring的四种注入方式 1.set方法注入 2.构造器注入 3.静态工厂注入 4.实例工厂注入 我使用下面两个类来进行注入的演示,这两个类分别是User和Car类: Car类: public cl ...

  5. 四种常用的100G QSFP28光模块的详细介绍

    100G有多种封装形式,包括CFP/CFP2/CFP4,CXP和QSFP28.在这些不同的100G封装形式中,QSFP28光模块因其具有端口密度高.功耗低和成本低等优势,所以成为了100G网络的主要封 ...

  6. 积分商城可设置的四种兑换商品类型

    积分商城顾名思义就是企业的线上商城,只是这个商城是使用积分来进行消费的,企业打造积分商城的主要目的是为了给线上的用户运营提供一个可以聚集用户的平台,有了这个商城平台,企业就可以利用积分体系运营来实现对 ...

  7. 后台CS代码中创建四种常用的SL动画效果

    http://www.cnblogs.com/chengxingliang/archive/2011/03/07/1974436.html后台CS代码中创建四种常用的动画效果[附带源码实例] 转载于: ...

  8. [转载] java实现四种常用排序算法

    参考链接: 用Java排序 四种常用排序算法 ##注:从小到大排 ##冒泡排序## 特点:效率低,实现简单 思想:每一趟将待排序序列中最大元素移到最后,剩下的为新的待排序序列,重复上述步骤直到排完所有 ...

  9. htt【RiPro网盘链接检测插件】目前支持四种常用网盘

    介绍: 目前支持百度网盘.蓝奏云.天翼云盘.坚果云盘,后续将支持更多网盘,如果你也想自己常用的网盘加入评论或联系站长告知,谢谢! 另外如使用过程中发现有链接状态已检测结果不匹配,请带上链接找站长修复! ...

最新文章

  1. 1025 反转链表 (25分)(最详细最简便)(套路模板)
  2. matlab实现非线性规划
  3. 1纸画图边框_日常手帐1月下半月总结:清新、复古、简约风日常手帐排版都有...
  4. 2013dgtcs 数对
  5. Android版本caj阅读器,CAJViewer安卓版
  6. 使用NanoHttpd在Android项目中搭建服务器
  7. java电话号码生成器
  8. 细数历史上那些有名的程序媛
  9. 那些著名的黑客事件 五
  10. css grid布局中的minmax()函数的使用
  11. js 动态给style标签内添加样式
  12. STM32F103寄存器方式点亮LED流水灯
  13. ITRON入门学习之实时操作系统的意义与价值
  14. wifi查看密码显示
  15. Python||报错:TypeError: can only join an iterable
  16. VIVADO时序约束之Output Delay(set_output_delay)
  17. CSS基础 外部样式表 内嵌样式表 行内样式表
  18. python csv数据处理生成图_Python 读取CSV文件数据并生成可视化图形
  19. 西游记中唐僧师徒四人的不同性格
  20. android微信数据库密码,android微信sqlite数据库密码简单获得获得

热门文章

  1. 苹果禁用FaceTime多人聊天功能:漏洞将很快修复
  2. 禁用了ssh的密码认证方式导致无法登陆
  3. 软件测试基础课程学习笔记3---软件测试方法
  4. python截图直接在内存里调用_Python-按块上传FTP中的内存文件(由API调用生...
  5. Golang实践录:xorm使用记录
  6. Linux下coredump调试2:实例
  7. 安卓增删改查用sql语句号码_详解Android中一些SQLite的增删改查操作
  8. python输出一棵松树_松树程序间距
  9. 【hadoop】hadoop 血缘解析
  10. 【Flink】Flink 写入到 CSV BucketingSink 的使用方法