评论

收藏

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

开发技术 开发技术 发布于:2021-10-20 17:00 | 阅读数:236 | 评论:0

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[i]+" : "+arguments[i]+" : ");
   } 
  } 
  } 
}
自定义注解
@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();
 }
  } 
}
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

关注下面的标签,发现更多相似文章