SpringMVC记录我遇到的坑_AOP注解无效|SpringMVC记录我遇到的坑_AOP注解无效,切面不执行的解决
AOP注解无效,切面不执行的解决
想做一个api请求日志,想到使用aop,配置过程中遇到了一个坑,aop不起作用,
我的aop是这样的:
package com.ljwm.ibei.aspact; import org.aspectj.lang.ProceedingJoinPoint; import org.aspectj.lang.annotation.Around; import org.aspectj.lang.annotation.Aspect; import org.aspectj.lang.annotation.Before; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.context.annotation.Configuration; 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 javax.servlet.http.HttpServletRequest; /** * Created by user on 2017/9/8. */@Aspect@Configurationpublic class ApiRequestLog { private Logger _log = LoggerFactory.getLogger(ApiRequestLog.class); @Around("execution(* com.ljwm.ibei.controller.*.*(..))")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(); _log.debug("请求开始, 各个参数, url: {}, method: {}, uri: {}, params: {}", url, method, uri, queryString); Object result = pjp.proceed(); return result; }}
配置文件分成applicationContext.xml、applicationContext-mvc.xml还有mybatis和shiro的
web.xml配置:
Archetype Created Web Application shiroFilter org.springframework.web.filter.DelegatingFilterProxy targetFilterLifecycletrue spring-dispatcherorg.springframework.web.servlet.DispatcherServlet shiroFilter /* contextConfigLocationclasspath:spring/applicationContext-mvc.xml 1 spring-dispatcher/ contextConfigLocationclasspath:spring/applicationContext*.xml characterEncodingFilter org.springframework.web.filter.CharacterEncodingFilter encodingUTF-8 forceEncodingtrue characterEncodingFilter /* org.springframework.web.context.ContextLoaderListener org.springframework.web.context.request.RequestContextListener com.ljwm.ibei.listener.ContextFinalizer
我把写在applicationContext中,把
对已经初始化的bean容器不在做后续处理,由于是先加载的mvc所以是aop失效,我把aop代理的那个放到mvc中,aop就能执行了,不知道我的猜测对不对,还望大神赐教
另一个问题:
springmvc在controller层使用aop切面不成功解决 需要在配置文件中加入
【SpringMVC记录我遇到的坑_AOP注解无效|SpringMVC记录我遇到的坑_AOP注解无效,切面不执行的解决】以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
推荐阅读
- 我要做大厨
- 一个小故事,我的思考。
- 家乡的那条小河
- 第三节|第三节 快乐和幸福(12)
- 20170612时间和注意力开销记录
- 这辈子我们都不要再联系了
- 死结。
- 跌跌撞撞奔向你|跌跌撞撞奔向你 第四章(你补英语,我补物理)
- 我从来不做坏事
- 喂,你结婚我给你随了个红包