Spring AOP创建Throwdvice实例

  1、异常发生的时候,通知某个服务对象做处理

         2、实现throwsAdvice接口

 

接口实现:

 

1

2

3

4

5

6

7

8

9

10

11

public interface IHello {

   public void sayHello(String str) throws Exception;

}

public class Hello implements IHello  {

    @Override

    public void sayHello(String str) throws Exception {

        System.out.println("你好"+str);

        //测试抛出异常

        throw new Exception("故意造成异常!");

    }

}

 

 SayThrowAdvice文件:

1

2

3

4

5

6

7

public class SayThrowAdvice implements ThrowsAdvice {

 

    public void afterThrowing(Method method,Object[] objs,Object target,Throwable ta)

    {

        System.out.println("我捕获的异常是-> "+ta+" =====, 在方法 "+method+"抛出了异常");

    }

}

  

applicationContext.xml文件:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN"

"http://www.springframework.org/dtd/spring-beans-2.0.dtd">

<beans>

    <!-- 建立目标对象实例 -->

    <bean id="bean_hello" class="com.pb.Hello" />

    <!-- 创建执行前advice实例 -->

    <bean id="sba" class="com.pb.SayBeforeAdvice" />

    <!-- 创建执行后advice实例 -->

    <bean id="sfa" class="com.pb.SayAfterAdvice" />

    <!-- 创建Around advice实例 -->

    <bean id="ssd" class="com.pb.SayAroundAdvice" />

    <!-- 创建Throw advice实例 -->

    <bean id="sta" class="com.pb.SayThrowAdvice" />

    <!-- 建立代理对象 -->

    <bean id="helloProxy" class="org.springframework.aop.framework.ProxyFactoryBean">

        <!-- 设置代理的接口 -->

        <property name="proxyInterfaces">

            <value>com.pb.IHello</value>

        </property>

        <!-- 设置目标对象实例 -->

        <property name="target">

            <ref bean="bean_hello"/>

        </property>

        <!-- 设置Advice实例 -->

        <property name="interceptorNames">

            <list>

               <!--

                <value>sba</value>

                <value>sfa</value>

                 -->

                 <value>ssd</value>

                 <value>sta</value>

            </list>

        </property>

    </bean>

</beans>

 主方法文件:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

public class MainTest {

 

    public static void main(String[] args) {

        // TODO Auto-generated method stub

        ApplicationContext context=new ClassPathXmlApplicationContext("applicationContext.xml");

         

        IHello hello=(IHello)context.getBean("helloProxy");

         

        try {

            hello.sayHello("访客");

        catch (Exception e) {

            // TODO: handle exception

        }

         

    }

 

}

 执行效果:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值