搜索
您的当前位置:首页正文

Spring Aop 注解式声明记录用户操作日志

来源:二三娱乐

一、自定义注解(annotation)

自定义注解的作用:在反射中获取注解,以取得注解修饰的类、方法或属性的相关解释。

//自定义注解相关设置

@Target({ElementType.METHOD})

@Retention(RetentionPolicy.RUNTIME)

@Documented

public @interface LogAnnotation {

//自定义注解的属性,default是设置默认值

String desc() default "无描述信息";

}

二、自定义注解的使用

@Service

public class UserService {

//与其它注解一样的使用

@LogAnnotation(desc="this is UserService")

public void add() {

System.out.println("UserService add...");

}

}

三、AOP中获取注解

//    环绕通知:类似与动态代理的全过程

//    携带参数ProceedingJoinPoint,且必须有返回值,即目标方法的返回

@Around(value = "execution(* me.lichunlong.spring.service.*.*(..)) &&@annotation(log)")

public Object aroundMethod(ProceedingJoinPoint pjd,LogAnnotation log) {

Object result = null;

System.out.println(log.desc());

try {

System.out.println("前置通知");

result = pjd.proceed();

System.out.println("后置通知");

} catch (Throwable e) {

System.out.println("异常通知");

}

System.out.println("返回通知");

return result;

}

Top