`
隐形的翅膀
  • 浏览: 497388 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

AOP 学习, 抛出通知

阅读更多
抛出通知
    org.springframework.aop.ThrowsAdvice;

   抛出通知跟后置通知一样是在连接点只后运行的,不过抛出通知只在方法抛出一个异常时才执行,该通知对程序运行不能做任何改变, 能做的只是改变抛出异常的类型

 
public class ErrorClass {
	
	public void error1() throws Exception{
		throw new Exception("Foo");
	}
	public void error2() throws IllegalArgumentException{
		throw new IllegalArgumentException("Foo");
	}

  }
  

  
   import org.springframework.aop.ThrowsAdvice;
   import org.springframework.aop.ThrowsAdvice;

public class MyThrowsAdvice implements ThrowsAdvice {
	
	public void afterThrowing(Exception ex) throws Throwable{
		System.out.println("this is a test1");
	}
	
	public void afterThrowing(Method method,Object[] args,Object target,IllegalArgumentException ex) throws Throwable{
		System.out.println("this is a test2");
	}

   }
   

  
   import org.springframework.aop.framework.ProxyFactory;
   importorg.springframework.aop.support.NameMatchMethodPointcutAdvisor;


public class test2 {

	public static void main(String[] args) {
		
                  ErrorClass target =new ErrorClass();
		
		ProxyFactory pf=new ProxyFactory(target);
		
		pf.addAdvice(new MyThrowsAdvice()); 
		
		ErrorClass ebean=(ErrorClass)pf.getProxy();
		
		try{
			ebean.error1();
		}catch(Exception ignored){
			
		}
		
		try{
			ebean.error2();
		}catch(Exception ignored){
			
		}
	}

   }
   

   对于抛出的每一个异常,SPRING只会运行一个afterThrowing()方法, SPRING会选择签名与抛出的异常最匹配的一个方法
  
   this is a test1
   this is a test2
   
分享到:
评论

相关推荐

    spring aop 学习笔记

    - `@AfterThrowing`:异常后通知,当目标方法抛出异常时执行。 - `@Around`:环绕通知,完全控制方法的调用,可以在调用前后添加自定义逻辑。 - `@Pointcut`:定义切点表达式,可以复用。 4. **实战应用** - **...

    aop学习

    - 异常通知:在目标方法抛出异常时运行。 - 环绕通知:可以在方法调用前后完全控制流程,包括决定是否调用目标方法。 **4. 切入点(Pointcut)** 切入点是匹配一组特定连接点的表达式,定义了通知应该应用到哪些...

    Spring_AOP_学习小结 Spring_AOP_学习小结 Spring_AOP_学习小结

    4. ThrowsAdvice(异常通知):在方法抛出异常后调用。 5. IntroductionInterceptor(引入拦截器):用于向目标对象添加新的字段或方法。 五、Spring AOP切入点 1. Pointcut:定义了匹配特定Joinpoint的规则,...

    AOP编程术语-通知

    在Spring中,`@AfterThrowing`注解允许我们定义一个只在方法抛出特定异常时运行的通知。 在Spring框架中,AOP是通过代理机制实现的,可以是基于接口的JDK动态代理或基于类的CGLIB代理。开发者可以根据实际需求选择...

    aop的学习案例.rar

    - `<aop:after-throwing>`:定义异常通知,当目标方法抛出异常时运行。 - `<aop:around>`:定义环绕通知,它包裹整个目标方法,可以在方法执行前后自由控制行为。 4. **连接点(Join Points)**: 连接点是切点在...

    Spring AOP学习资料(pdf)

    - 定义:程序执行过程中的某个特定点,如方法执行前后或异常抛出时。 - 在Spring AOP中,连接点通常是方法调用。 **4. Pointcut (切入点)** - 定义:匹配连接点的表达式,用于指定通知应用的时机和目标对象。 **5....

    spring aop学习实例

    2. **通知(Advice)**:通知是在特定连接点(join point)执行的代码,可以是方法调用前、后,或者异常抛出时。Spring AOP支持五种不同类型的通知:前置通知(Before)、后置通知(After Returning)、异常通知...

    2024-spring-aop学习项目

    《深入理解Spring AOP:2024春季学习项目指南》 ...通过这个2024春季AOP学习项目,开发者将有机会亲手实践上述概念,深入理解Spring AOP的精髓,从而在实际项目中更好地运用这一强大的工具,提升代码质量与工程效率。

    Spring AOP代码示例

    3. 连接点(Join Point):连接点是在应用程序执行过程中能够插入切面的一个特定点,例如方法调用、字段赋值或异常抛出。 4. 切入点(Pointcut):切入点是匹配连接点的规范,定义了哪些连接点将被切面通知所拦截。...

    AOP思想深入学习的资料

    3. 通知:通知是在特定连接点上执行的行为,它可以是前置通知(在方法调用前执行)、后置通知(在方法调用后执行,无论是否抛出异常)、返回通知(在方法正常返回时执行)、异常通知(在方法抛出异常时执行)和最终...

    Spring AOP面向方面编程原理:AOP概念

    2. **连接点(Joinpoint)**:在程序执行过程中的某个具体点,如方法调用、异常抛出等,这些点就是连接点。Spring AOP主要支持方法调用作为连接点。 3. **通知(Advice)**:在特定的连接点处执行的动作,如before...

    springaop.zip

    2. **通知(Advice)**:通知是在特定连接点(Join Point)执行的代码,比如方法调用前后、异常抛出时等。Spring支持五种类型的Advice:Before、After、After Returning、After Throwing、Around。 3. **切入点...

    spring aop API示例

    `@AfterThrowing`注解允许我们指定只有在特定异常抛出时才执行的通知。这在进行错误处理和异常特定的清理工作时非常有用。 4. **Around通知**: Around通知是最强大的通知类型,因为它提供了完整的控制权,可以在...

    Sping aop简单示例

    4. **异常后通知(After Throwing Advice)**:在方法抛出异常后执行。 5. **环绕通知(Around Advice)**:最强大,可以在方法调用前后执行自定义逻辑,并可以选择是否继续执行方法。 接下来,**连接点(Join ...

    springaop学习

    - **@AfterThrowing**:在方法抛出异常后执行的通知。 - **@Around**:可以在方法调用前后执行自定义行为的通知。 #### 六、AnnotationAwareAspectJAutoProxyCreator **AnnotationAwareAspectJAutoProxyCreator** ...

    spring的aop实现

    - 异常后通知:在目标方法抛出异常后执行,可以统一处理异常。 - 环绕通知:最强大,可以完全控制目标方法的调用,包括是否执行目标方法以及执行前后的行为。 4. **代理(Proxy)**: Spring AOP有两种代理方式...

    spring AOP(声明式事务管理)小程序

    - **异常后通知(After Throwing Advice)**:在目标方法抛出异常后触发,用于异常处理。 - **环绕通知(Around Advice)**:包裹整个目标方法,可以在方法执行前后自由添加逻辑,如控制事务的开始和结束。 4. **...

    spring 3.0 aop 实例

    - 后终通知(After(Finally)Advice):无论目标方法是否正常执行或抛出异常,都会执行。 - 环绕通知(Around Advice):可以控制目标方法的整个调用过程,包括前后通知。 3. **AOP代理**:Spring提供两种类型的...

    C# 实现 AOP微型框架

    4. **通知(Advices)**:在切点处执行的代码,如前文所述,包括前置通知(在方法执行前)、后置通知(在方法执行后)、环绕通知(包裹整个方法执行)和异常通知(处理方法抛出的异常)。 5. **编织(Weaving)**:...

Global site tag (gtag.js) - Google Analytics