抛出通知
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
分享到:
相关推荐
- `@AfterThrowing`:异常后通知,当目标方法抛出异常时执行。 - `@Around`:环绕通知,完全控制方法的调用,可以在调用前后添加自定义逻辑。 - `@Pointcut`:定义切点表达式,可以复用。 4. **实战应用** - **...
- 异常通知:在目标方法抛出异常时运行。 - 环绕通知:可以在方法调用前后完全控制流程,包括决定是否调用目标方法。 **4. 切入点(Pointcut)** 切入点是匹配一组特定连接点的表达式,定义了通知应该应用到哪些...
4. ThrowsAdvice(异常通知):在方法抛出异常后调用。 5. IntroductionInterceptor(引入拦截器):用于向目标对象添加新的字段或方法。 五、Spring AOP切入点 1. Pointcut:定义了匹配特定Joinpoint的规则,...
在Spring中,`@AfterThrowing`注解允许我们定义一个只在方法抛出特定异常时运行的通知。 在Spring框架中,AOP是通过代理机制实现的,可以是基于接口的JDK动态代理或基于类的CGLIB代理。开发者可以根据实际需求选择...
- `<aop:after-throwing>`:定义异常通知,当目标方法抛出异常时运行。 - `<aop:around>`:定义环绕通知,它包裹整个目标方法,可以在方法执行前后自由控制行为。 4. **连接点(Join Points)**: 连接点是切点在...
- 定义:程序执行过程中的某个特定点,如方法执行前后或异常抛出时。 - 在Spring AOP中,连接点通常是方法调用。 **4. Pointcut (切入点)** - 定义:匹配连接点的表达式,用于指定通知应用的时机和目标对象。 **5....
2. **通知(Advice)**:通知是在特定连接点(join point)执行的代码,可以是方法调用前、后,或者异常抛出时。Spring AOP支持五种不同类型的通知:前置通知(Before)、后置通知(After Returning)、异常通知...
《深入理解Spring AOP:2024春季学习项目指南》 ...通过这个2024春季AOP学习项目,开发者将有机会亲手实践上述概念,深入理解Spring AOP的精髓,从而在实际项目中更好地运用这一强大的工具,提升代码质量与工程效率。
3. 连接点(Join Point):连接点是在应用程序执行过程中能够插入切面的一个特定点,例如方法调用、字段赋值或异常抛出。 4. 切入点(Pointcut):切入点是匹配连接点的规范,定义了哪些连接点将被切面通知所拦截。...
3. 通知:通知是在特定连接点上执行的行为,它可以是前置通知(在方法调用前执行)、后置通知(在方法调用后执行,无论是否抛出异常)、返回通知(在方法正常返回时执行)、异常通知(在方法抛出异常时执行)和最终...
2. **连接点(Joinpoint)**:在程序执行过程中的某个具体点,如方法调用、异常抛出等,这些点就是连接点。Spring AOP主要支持方法调用作为连接点。 3. **通知(Advice)**:在特定的连接点处执行的动作,如before...
2. **通知(Advice)**:通知是在特定连接点(Join Point)执行的代码,比如方法调用前后、异常抛出时等。Spring支持五种类型的Advice:Before、After、After Returning、After Throwing、Around。 3. **切入点...
`@AfterThrowing`注解允许我们指定只有在特定异常抛出时才执行的通知。这在进行错误处理和异常特定的清理工作时非常有用。 4. **Around通知**: Around通知是最强大的通知类型,因为它提供了完整的控制权,可以在...
4. **异常后通知(After Throwing Advice)**:在方法抛出异常后执行。 5. **环绕通知(Around Advice)**:最强大,可以在方法调用前后执行自定义逻辑,并可以选择是否继续执行方法。 接下来,**连接点(Join ...
- **@AfterThrowing**:在方法抛出异常后执行的通知。 - **@Around**:可以在方法调用前后执行自定义行为的通知。 #### 六、AnnotationAwareAspectJAutoProxyCreator **AnnotationAwareAspectJAutoProxyCreator** ...
- 异常后通知:在目标方法抛出异常后执行,可以统一处理异常。 - 环绕通知:最强大,可以完全控制目标方法的调用,包括是否执行目标方法以及执行前后的行为。 4. **代理(Proxy)**: Spring AOP有两种代理方式...
- **异常后通知(After Throwing Advice)**:在目标方法抛出异常后触发,用于异常处理。 - **环绕通知(Around Advice)**:包裹整个目标方法,可以在方法执行前后自由添加逻辑,如控制事务的开始和结束。 4. **...
- 后终通知(After(Finally)Advice):无论目标方法是否正常执行或抛出异常,都会执行。 - 环绕通知(Around Advice):可以控制目标方法的整个调用过程,包括前后通知。 3. **AOP代理**:Spring提供两种类型的...
4. **通知(Advices)**:在切点处执行的代码,如前文所述,包括前置通知(在方法执行前)、后置通知(在方法执行后)、环绕通知(包裹整个方法执行)和异常通知(处理方法抛出的异常)。 5. **编织(Weaving)**:...