Java自学者论坛

 找回密码
 立即注册

手机号码,快捷登录

恭喜Java自学者论坛(https://www.javazxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,会员资料板块,购买链接:点击进入购买VIP会员

JAVA高级面试进阶训练营视频教程

Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程Go语言视频零基础入门到精通Java架构师3期(课件+源码)
Java开发全终端实战租房项目视频教程SpringBoot2.X入门到高级使用教程大数据培训第六期全套视频教程深度学习(CNN RNN GAN)算法原理Java亿级流量电商系统视频教程
互联网架构师视频教程年薪50万Spark2.0从入门到精通年薪50万!人工智能学习路线教程年薪50万大数据入门到精通学习路线年薪50万机器学习入门到精通教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程MySQL入门到精通教程
查看: 467|回复: 0

AOP的异常通知

[复制链接]
  • TA的每日心情
    奋斗
    3 天前
  • 签到天数: 757 天

    [LV.10]以坛为家III

    2034

    主题

    2092

    帖子

    70万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    707886
    发表于 2021-7-21 17:23:42 | 显示全部楼层 |阅读模式

     

    一、配置异常通知的步骤 (Aspectj方式)

      1、只有当切点报异常才能触发异常通知

      2、在spring中有Aspectj 方式提供了异常通知方法

        2.1 如果希望通过 schema-base 实现需要按照特定的要求自己编写方法

      3、实现步骤:

        3.1 新建类,在类中写任意名称的方法    

    public class myExcetion {
        public void myexcetion(Exception e1){
            System.out.println("执行异常,tain"+e1.getMessage());
        }
    }

        3.2 在spring配置文件中配置

          3.2.1 <aop:aspect ref="">:ref= 表示在哪个类中

          3.2.2 <aop:xxxx> 什么标签表示什么通知

          3.2.3 method:表示当触发这个通知时,调用哪个方法

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns:aop="http://www.springframework.org/schema/aop"
        xsi:schemaLocation="http://www.springframework.org/schema/beans
            http://www.springframework.org/schema/beans/spring-beans.xsd
            http://www.springframework.org/schema/aop
            http://www.springframework.org/schema/aop/spring-aop.xsd">
            
            <bean id="myexcetion" class="com.bjsxt.myExcetion.myexcetion"></bean>
            <aop:config>
                <aop:aspect ref="myexcetion">
                    <aop:pointcut expression="execution(* com.bjsxt.test.Test.demo1())" id="mypoint"/>
                    <aop:after-throwing method="myExcetion" pointcut-ref="mypoint" throwing="e1"/>    throwing 表示异常处理的方法的参数名 (可以不再异常通知中声明异常对象)
                </aop:aspect>        
            </aop:config>
           <bean id="test" class="com.bjsxt.test.Test"></bean>    
      </beans>

     二、使用Schema-base 实现异常

      1、新建一个类实现ThrowsAdvice接口,且必须使用afterThrowing这个方法名。。

        1.1有两种参数方式

          必须有 1个 或 4个参数

        1.2 异常类型要与切点报的异常类型一致,

    public class Mythrow implements ThrowsAdvice{
       // public void afterThrowing(Exception ex) throws Throwable {
         //   System.out.println("执行异常通知11111");
        //}
    
        public void afterThrowing(Method m, Object[] args, Object target, Exception ex) {
            System.out.println("执行异常通知2222");
        }
    }

      2、在applicationContext.xml中配置

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns:aop="http://www.springframework.org/schema/aop"
        xsi:schemaLocation="http://www.springframework.org/schema/beans
            http://www.springframework.org/schema/beans/spring-beans.xsd
            http://www.springframework.org/schema/aop
            http://www.springframework.org/schema/aop/spring-aop.xsd">
            
            <bean id="mythrow" class="com.bjsxt.advice.Mythrow"></bean>
            <bean id="demo" class="com.bjsxt.test.Demo"></bean>
            <aop:config>
                <aop:pointcut expression="execution(* com.bjsxt.test.Demo.demo1())" id="mypoint"/>
                <aop:advisor advice-ref="mythrow" pointcut-ref="mypoint"/>
            </aop:config>
      </beans>

     

    哎...今天够累的,签到来了1...
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|小黑屋|Java自学者论坛 ( 声明:本站文章及资料整理自互联网,用于Java自学者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2024-7-5 02:13 , Processed in 0.055270 second(s), 27 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2021, Tencent Cloud.

    快速回复 返回顶部 返回列表