三叶草 发表于 2021-10-20 17:00:11

JSP 自定义注解及记录操作日志

JSP 自定义注解及记录操作日志
Spring的配置文件

<aop:aspectj-autoproxy />日志拦截器

package com.vem.interceptor;

import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Pointcut;
import org.aspectj.lang.reflect.MethodSignature;
import org.springframework.stereotype.Component;

import com.vem.entity.BussAnnotation;

@Aspect
@Component
public class LogInterceptor {


@Pointcut("execution(* com.vem.service..*.*(..))")
public void aApplogic() {
   
}
   
/**
   * 环绕通知 用于拦截指定内容,记录用户的操作
   */
@Around(value = "aApplogic() && @annotation(annotation) &&args(object,..) ", argNames = "annotation,object")
public void interceptorApplogic(ProceedingJoinPoint joinPoint,
      BussAnnotation annotation, Object object) throws Throwable {
    System.out.println("模块名称moduleName:" + annotation.moduleName());
    System.out.println("操作名称option:" + annotation.option());
    String methodName = joinPoint.getSignature().getName();
System.out.println("方法名methodName:" + methodName);
   
    MethodSignature methodSignature = (MethodSignature) joinPoint.getSignature();
    String[] strings = methodSignature.getParameterNames();
   
    joinPoint.proceed();
   
    Object[] arguments = joinPoint.getArgs();//获得参数列表
    if(arguments.length<=0){
      System.out.println(methodName+"方法没有参数");
    }else{
   for(int i=0;i<arguments.length;i++){
   System.out.println(strings+" : "+arguments+" : ");
   }
    }
}
}

自定义注解

@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.METHOD})
@Documented
public @interface BussAnnotation {
//模块名
String moduleName() default "";
//操作内容
String option() default "";
}
接口实现
写在service

@BussAnnotation(moduleName="人员管理",option="添加用户")
public void testDemo1(PageData pd) throws Exception{

}
junit测试类

package com.vem.entity;

import javax.annotation.Resource;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

import com.vem.service.data.DemoService;
import com.vem.util.PageData;

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(
{"classpath:spring/ApplicationContext.xml"
})
public class AopTest {

@Resource(name = "demoService")
public DemoService demoService;

@Test
public void testAopAddUser1(){
   PageData pd = new PageData();
   pd.put("name", "zhangzexing");
   pd.put("age", "21");
   pd.put("passward", "123456");
   try {
demoService.testDemo2(pd);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

}


感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

https://www.uoften.com/program/jsp/20180413/48164.html
页: [1]
查看完整版本: JSP 自定义注解及记录操作日志