自定义注解,记录操作日志

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();
		}
    }  

}  

 

转载于:https://my.oschina.net/zhangzexing/blog/881935

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值