zoukankan      html  css  js  c++  java
  • Spring AOP创建Throwdvice实例

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

             2、实现throwsAdvice接口

    接口实现:

    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文件:

    public class SayThrowAdvice implements ThrowsAdvice {
    
    	public void afterThrowing(Method method,Object[] objs,Object target,Throwable ta)
    	{
    		System.out.println("我捕获的异常是-> "+ta+" =====, 在方法 "+method+"抛出了异常");
    	}
    }
    

      

    applicationContext.xml文件:

    <?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>
    

     主方法文件:

    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
    		}
    	    
    	}
    
    }
    

     执行效果:

  • 相关阅读:
    [整理]Cadence 生成带有网络追踪的 PDF 原理图
    [整理]FSM 有限状态机
    [原创]Quartus 中调用 Modelsim 波形仿真
    [原创]SPI 协议介绍以及基于 Verilog 的 IP 核实现
    [原创]Verilog 代码编程规范(个人用)
    [算法]线段树
    [算法]tarjan
    poj3280
    poj 3258 River Hopscotch
    [poj 1251]Jungle Roads
  • 原文地址:https://www.cnblogs.com/schangxiang/p/11146506.html
Copyright © 2011-2022 走看看