spring aop小结

二. Springaop

1. 增强类型

1) @Before:前置增强

2) @After:后置增强,不管是否抛出异常,相当于finally代码块的代码,并且紧跟着被代理的目标方法执行

3) @AfterThrowing异常后增强:

4) @AfterReturning:返回后增强

5) @Around:环绕增强,传入一个ProceedingJoinPoint用于调用业务模块的代码的对象,可以实现其他四类增强所有功能

 

2.各种增强调用时间

业务方法:Public String  businessMethod(){

}

动态代理回调中的方法执行顺序类似以下代码结构

invoke(){

try {
try {
    @Before //前置增强
String result =businessMethod(); //代理的业务目标代码
}
finally{
    @After //哪怕方法抛异常也会执行
}

}
catch (Exception e){
@AfterThrowing //发生异常后增强
  throw e;
}
@AfterReturning   //返回结果时增强
return result;

}

 

2.常用切点表达式

1.方法切点表达式

1) 例子:

execution(public * com.spring.service.BusinessObject.businessService(java.lang.String,..))

2)说明:

指定方法的访问控制修饰符、返回值、包名、方法名、参数名、声明抛出的异常

 

2.类切点表达式

1) 例子:

指定类:within(com.spring.service.BusinessObject)

指定包但不包含子包:within(com.spring.service.*)

指定包但包含子包:within(com.spring.service..*)

 

特殊用法:指定使用了某个注解的类:

@within(com.spring.annotation.BusinessAspect)

 

3.参数切点表达式

1) 例子:

指定方法参数: args(java.lang.String,..,java.lang.Integer)

 

特殊用法:指定参数上使用了某个注解的方法

@args(com.spring.annotation.BusinessAspect)

 

4.注解切点表达式

指定使用了注解的方法

@annotation(com.spring.annotation.BusinessAspect)

 

 

    

 

posted @ 2021-09-20 14:24  弹弹球  阅读(33)  评论(0)    收藏  举报