SpringMVCAOP通过注解方式拦截Controller等实现日志管理分解

Spring MVC AOP通过注解方式拦截

Controller等实现日志管理

开始上代码:

注解定义

package com.jiankunking.common;

import java.lang.annotation.*; /**

* @author jiankunking * @Date: 2016/8/15 * @Time: 11:09

* @annotation OperationLogger */

@Retention(RetentionPolicy.RUNTIME)//注解会在class中存在,运行时可通过反射获取 @Target(ElementType.METHOD)//目标是方法

@Documented//文档生成时,该注解将被包含在javadoc中,可去掉 public @interface OperationLogger {

/**

* 模块名字 */

String modelName() default \

/**

* 操作类型 */

String option(); }

@interface是用来自定义注释类型的。

注释的声明用@符号后面跟上这个注释类型的名字,再后面跟上括号,括号中列出这个注释中元 素/方法的key-value对。值必须是常量。 AOP拦截部分

package com.jiankunking.common;

import org.apache.log4j.Logger; import org.aspectj.lang.JoinPoint;

import org.aspectj.lang.ProceedingJoinPoint; import org.aspectj.lang.Signature; import org.aspectj.lang.annotation.*;

import org.aspectj.lang.reflect.MethodSignature; import org.springframework.stereotype.Component;

import java.lang.reflect.Method; /**

* @author jiankunking * @Date: 2016/8/15 * @Time: 11:11

* @annotation SysLogAspect */

@Aspect @Component

public class SysLogAspect {

private static final Logger logger = Logger.getLogger(SysLogAspect.class);

/**

* 定义Pointcut,Pointcut的名称,此方法不能有返回值,该方法只是一个标示 */

@Pointcut(\ public void controllerAspect() {

System.out.println(\我是一个切入点\ }

/**

* 前置通知(Before advice) :在某连接点(JoinPoint)之前执行的通知,但这个通知不能阻止连接点前的执行。 * @param joinPoint */

@Before(\

public void doBefore(JoinPoint joinPoint) {

System.out.println(\前

>>展开全文<<
12@gma联系客服:779662525#qq.com(#替换为@) 苏ICP备20003344号-4