AOP在ssm的配置

6 篇文章 0 订阅
2 篇文章 0 订阅

开启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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值