二. Springaop
1. 增强类型
1) @Before:前置增强
2) @After:后置增强,不管是否抛出异常,相当于finally代码块的代码
3) @AfterThrowing异常后增强:
4) @AfterReturning:返回后增强,相当于方法执行后紧接着的代码
5) @Around:环绕增强,传入一个ProceedingJoinPoint用于调用业务模块的代码的对象,可以实现其他四类增强所有功能
2.各种增强调用时间:
业务方法:Public String businessMethod(){
}
动态代理回调中的方法执行顺序
invoke(){
try{
@Before
String result =businessMethod();
@AfterReturning
}catch(Exception e){
@AfterThrowing
}finally{
@After
}
}
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)