开启AOP注解,放在spring3-servlet.xml
里bean注解驱动<mvc:annotation-driven>
后。放在applicationContext.xml
不起效果
<!-- ①:对web包中的所有类进行扫描,以完成Bean创建和自动依赖注入的功能 -->
<mvc:annotation-driven>
<mvc:message-converters register-defaults="true">
<bean class="org.springframework.http.converter.StringHttpMessageConverter">
<property name="supportedMediaTypes" value = "text/plain;charset=UTF-8" />
</bean>
</mvc:message-converters>
</mvc:annotation-driven>
<aop:aspectj-autoproxy proxy-target-class="true"></aop:aspectj-autoproxy>
如以上代码,aop的配置放在spring3-servlet.xml
文件<mvc:annotation-driven>
标签对后面。
附aop java文件
package com.chen.controller.intelCommunity;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
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.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;
import org.springframework.web.context.request.RequestAttributes;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import com.google.gson.Gson;
import com.chen.util.CopyUtil;;
@Aspect //定义一个切面
@Component
public class LogRecordAspect {
private static final Logger logger = LoggerFactory.getLogger(LogRecordAspect.class);
// 定义切点Pointcut
@Pointcut("execution(* com.chen.controller.intelCommunity.*Controller.*(..))")
public void excudeService() {
}
@Around("excudeService()")
public Object doAround(ProceedingJoinPoint pjp) throws Throwable {
RequestAttributes ra = RequestContextHolder.getRequestAttributes();
ServletRequestAttributes sra = (ServletRequestAttributes) ra;
HttpServletRequest request = sra.getRequest();
String url = request.getRequestURL().toString();
String method = request.getMethod();
String uri = request.getRequestURI();
String queryString = request.getQueryString();//request自己的遍历参数方法,通过&连接
Map<String, Object> paramMap = CopyUtil.copyToMap(request);//CopyUtil是自己写的一个遍历参数的类,打印的是json格式,查看效果较好(文章地址在下方)
logger.info("请求开始, 各个参数, url: {}", url);
logger.info("请求开始======>>>>>>>, uri: {}", uri);
logger.info("请求开始======>>>>>>>, method: {}", method);
//logger.info("请求开始, params: {}", queryString);
logger.info("请求开始======>>>>>>>, paramMap: {}", paramMap);
// result的值就是被拦截方法的返回值
Object result = pjp.proceed();
Gson gson = new Gson();
logger.info("请求结束,controller的返回值是 <<<<<<<<=======" + gson.toJson(result));
return result;
}
}
CopyUntils参数枚举代码的链接地址:
https://blog.csdn.net/cyj7696/article/details/80903689