`

Spring Aop thorws 太好了

阅读更多

我研究了下AOP对 异常的统一处理,这个东西太好用了,可把系统异常颗粒度划分细,

先来个接口

public interface TestBean
{
	void test1()throws ClassNotFoundException;
    int test2(int a,int b);
}

 

 

实现类:

public class TestBeanImpl implements TestBean
{
    public void test1()throws ClassNotFoundException
    {
        Class.forName("Peson");
    }

    public int test2(int a, int b)
    {
        return a / b;
    }
}

 

接下来是重点:Excption 集中处理点

public class MyExceptionAdvice implements ThrowsAdvice
{
//在这里你可以定义你自己需要处理的Exception方法,比如我这里就做了对
//ClassNotFoundException ,Exception 也就是说这个类只关心这两个异常
    public void afterThrowing(ClassNotFoundException ex) throws Throwable
    {
        System.out.println("系统抛出ClassNotFoundException异常,异常提示为: " + ex.getMessage());
    }
 
    public void afterThrowing(Method m, Object[] args, Object target, Exception ex)
    {
        System.out.println("系统抛出Exception异常,异常提示为: " + ex.getMessage());
        System.out.println("抛出异常的方法为: " + m);
        System.out.println("抛出异常的方法的参数为: " + args);
        System.out.println("抛出异常的目标对象为: " + target);
    }

 
}

 

好了,接下来是配置文件

<?xml version="1.0" encoding="gb2312"?>

<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
	"http://www.springframework.org/dtd/spring-beans.dtd">

<beans>

	<bean id="testTarget" class="com.spring.lee6.throwsa.TestBeanImpl"/>
 
	<bean id="myExceptionAdvice" class="com.spring.lee6.throwsa.MyExceptionAdvice"/>
 
	<bean id="test" class="org.springframework.aop.framework.ProxyFactoryBean">
		<property name="proxyInterfaces">
			<value>com.spring.lee6.throwsa.TestBean</value>
		</property> 
		<property name="target">
			<ref local="testTarget"/>		
		</property>
		<property name="interceptorNames">
			<list>
				<value>myExceptionAdvice</value>
			</list>
		</property>
	</bean>

</beans>

 管理处理类,呵呵,很受用

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics