切入类:

package com.atChina.Test4;import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.AfterReturning;
import org.aspectj.lang.annotation.AfterThrowing;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;/*** @Aspect:来自aspectj框架,表示当前类是切面类* 切面类是用来给业务方法增强功能的类*/
@Aspect
public class MyAspect {/*** @AfterThrowing:异常通知,目标方法抛出异常时执行*  属性:1. value,表示切入点表达式(切面功能加入的位置)*      2. throwing,自定义的变量,表示目标方法的异常对象,需要和通知方法的参数名*  位置:在方法的上面* * 特点:*  1.在目标方法抛出异常时执行*  2.不是异常处理程序,只是得到异常的消息*  3.可以作为目标方法的监控程序,检查目标方法是否正常执行*/@AfterThrowing(value="execution(* *..SomeServiceImpl.doException())", throwing="ex")public void myAfterThrowing(Throwable ex){System.out.println("出现了异常"+ex);}
}

普通bean

package com.atChina.Test4;public interface SomeService {public void doSome();public String doOther(String params);public Student getStudent();public String doAround();public void doException();
}package com.atChina.Test4;public class SomeServiceImpl implements SomeService {@Overridepublic void doSome() {System.out.println("执行了doSome业务方法...");}@Overridepublic String doOther(String params) {// TODO Auto-generated method stubSystem.out.println("执行了doSome业务方法..."+params);return params;}@Overridepublic Student getStudent() {Student st = new Student();st.setAge(22);st.setName("孙悟空");return st;}@Overridepublic String doAround() {System.out.println("执行了doAround业务方法...");return "doAround";}@Overridepublic void doException() {// TODO Auto-generated method stubint i = 5/0;System.out.println("doException...");}
}package com.atChina.Test4;public class Student {private String name;private int age;public void setName(String name) {this.name = name;}public void setAge(int age) {this.age = age;}@Overridepublic String toString() {return "Student [name=" + name + ", age=" + age + "]";}
}

配置文件

<?xml version="1.0" encoding="UTF-8"?>
<!-- 引用Spring的多个Schema空间的格式定义文件 -->
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"xmlns:context="http://www.springframework.org/schema/context"xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context.xsdhttp://www.springframework.org/schema/aophttp://www.springframework.org/schema/aop/spring-aop.xsdhttp://www.springframework.org/schema/txhttp://www.springframework.org/schema/tx/spring-tx.xsd "><!-- 声明目标类对象 --><bean id="someService" class="com.atChina.Test4.SomeServiceImpl" /><!-- 声明切面类对象 --><bean id="myAspect" class="com.atChina.Test4.MyAspect" /><!-- 声明自动代理生成器,创建代理对象 --><aop:aspectj-autoproxy /> <!-- 寻找aspectj框架能够识别的标签 -->
</beans>

测试方法:

@Testpublic void test2(){String configLocation = "com/atChina/Test4/applicationContext.xml"; // 类路径的根目录ApplicationContext ctx = new ClassPathXmlApplicationContext(configLocation);// 目标对象有接口,aspectj默认使用的是jdk动态代理SomeService proxy = (SomeService) ctx.getBean("someService");System.out.println(proxy.getClass().getName());// proxy.doSome();System.out.println("===================================");proxy.doException();}

spring23:Aspectj实现异常通知@AfterThrowing相关推荐

  1. spring-AspectJ异常通知

    一.创建项目     项目名称:spring101002 二.添加jar包     1.在项目中创建lib目录         /lib     2.在lib目录下添加相关spring jar包    ...

  2. 配置切入点表达式|| 前置通知、后置通知、异常通知、最终通知、环绕通知

    环绕通知 pom.xml <?xml version="1.0" encoding="UTF-8"?> <project xmlns=&quo ...

  3. Spring Boot AOP面向切面编程使用(定义切入点、前置通知、后置通知、返回通知、异常通知、环绕通知)

    1 AOP AOP为Aspect Oriented Programming的缩写,意为:面向切面编程,通过预编译方式和运行期间动态代理实现程序功能的统一维护的一种技术.AOP是OOP的延续,是软件开发 ...

  4. 返回通知异常通知环绕通知

    [返回通知] LoggingAspect.java: 1 @Aspect 2 @Component 3 public class LoggingAspect { 4 /* 5 * 在方法正常执行后执行 ...

  5. spring之aop(前置通知,后置通知,环绕通知,过滤通知,异常通知)

    1.AOP中关键性概念  连接点(Joinpoint):程序执行过程中明确的点,如方法的调用,或者异常的抛出 目标(Target):被通知(被代理)的对象 注1:完成具体的业务逻辑 通知(Advice ...

  6. spring之AOP(面向切面编程)和五大通知(前置通知、后置通知、异常通知、环绕通知、过滤通知)

    一.aop的介绍 1.AOP中关键性概念 : 连接点(Joinpoint):程序执行过程中明确的点,如方法的调用,或者异常的抛出. 目标(Target):被通知(被代理)的对象 注1:完成具体的业务逻 ...

  7. laravel 控制器中使用中间件_在 Laravel 中使用 Slack 进行异常通知

    php中文网最新课程 每日17点准时技术干货分享 异常处理是软件开发过程中无法逃避的问题.对于一套设计良好代码高效的程序,出现异常的可能性会比较低,但这并不意味着不会出现异常,有些异常甚至会引起严重的 ...

  8. springboot集成钉钉_用于spring boot基于钉钉的异常通知

    前言 作为后端开发者,项目上线之后难免会遇到各种问题,一个良好且及时的异常通知机制可以让我们在项目的维护上避免很多不必要的麻烦. 本项目的开发愿景是为了给使用者在线上项目的问题排查方面能够带来帮助,简 ...

  9. 异常通知(After Throwing Advice)

    在方法抛出异常退出时执行的通知.ApplicationContext 中在<aop:aspect> 里面使用<aop:after-throwing>元素进行声明.例如,Serv ...

最新文章

  1. vue2.0 vue-cli项目中路由之间的参数传递
  2. java上转型对象特点_Java 浅析三大特性之一继承
  3. 这个方法无需旋转就可使得横轴坐标不重叠!
  4. XStream将XML转换为JAVA对象快速指南
  5. Qt绘制形状不规则窗口(一)
  6. 区块链监管难题争论不休,这里具体谈谈辅助监管的四种技术
  7. [转载] Python round四舍五入精度缺失的解决
  8. Vue组件学习(转载)
  9. 如何在Linux上构建 RAID 10阵列
  10. 云桌面优缺点_云桌面真的是办公最佳选择吗?云桌面的优缺点对比
  11. Java链表详解--通俗易懂(超详细,含源码)
  12. linux拷贝文件前几行,Linux显示文件前几行、拷贝文件前几行、删除文件前几列...
  13. LeetCode知识点总结 - 868
  14. 小案例 JavaScript-简易五子棋
  15. image标签不显示照片img标签能显示
  16. 基于搜索的贝叶斯网络结构学习算法-K2
  17. IC基础——FIFO
  18. 华为云计算IE面试笔记-桌面云用户登录连接流程及故障处理
  19. PYGAME - Event 事件
  20. IDEA系列新手上路(作者使用经历,长篇预警)

热门文章

  1. this.parentNode.nextSibling 对div里的换行敏感
  2. 2012-2013年下学期计划
  3. csdn博客怎么修改字体的大小和颜色
  4. nginx负载均衡高可用
  5. 机器学习算法 --- Decision Trees Algorithms
  6. Webex远程网络视频会议使用指南
  7. xaml控件样式大全(太有用了)C#
  8. hdu 1757 A Simple Math Problem 构造矩阵
  9. css区块定位之浮动与清除属性
  10. mysql 1067错误,服务无法启动 进程意外终止