1、自定义注解
@Target({ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
public @interface LogTarget {
String operationDesc() default "";//操作详情operationDesc
String operationType() default "";// 操作类型operationType
}
2、切面类
@Aspect
@Component
public class Aop2Log {
@Autowired
private IDbSupport dbsupport;
@Autowired
private TransactionTemplate transactionTemplate;
/**
* 注解切入点
*/
@Pointcut("@annotation(awb.operations.aop.LogTarget)")
public void logTarget() {
}
/**
* update切入点
*/
@Pointcut("execution(* awb.operations.service..*.*Service.update*(..))")
public void update() {
}
/**
* save切入点
*/
@Pointcut("execution(* awb.operations.service..*.*Service.save*(..))")
public void save() {
}
/**
* create切入点
*/
@Pointcut("execution(* awb.operations.service..*.*Service.create*(..))")
public void create() {
}
/**
* delete切入点
*/
@Pointcut("execution(* awb.operations.service..*.*Service.delete*(..))")
public void delete() {
}
/**
* add切入点
*/
@Pointcut("execution(* awb.operations.service..*.*Service.add*(..))")
public void add() {
}
@AfterReturning(value = "logTarget()")
public void afterOperate(JoinPoint point) throws Exception{
//具体操作
}
@AfterThrowing(value = "logTarget()",throwing = "e")
public void afterOperateThrow(JoinPoint point,Throwable e) throws Exception{
//具体操作
}
}
类上加入注解@Aspect,定义切入点,@Pointcut(表达式),具体可以直接搜索表达式怎么写。操作成功的方法上的注解为@AfterReturning,值为logTarget()方法,即它的切人点是logTarget方法,也就是有LogTarget.class注解的地方。
3、引入jar包注意事项
aspectjweaver-1.8.13.jar,低版本的jar可能会出问题
aopalliance-1.0.jar