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 shiroFilterorg.springframework.web.filter.DelegatingFilterProxytargetFilterLifecycletrueshiroFilter/*spring-dispatcherorg.springframework.web.servlet.DispatcherServletcontextConfigLocationclasspath:spring/applicationContext-mvc.xml1spring-dispatcher/contextConfigLocationclasspath:spring/applicationContext*.xmlcharacterEncodingFilterorg.springframework.web.filter.CharacterEncodingFilterencodingUTF-8forceEncodingtruecharacterEncodingFilter/*org.springframework.web.context.ContextLoaderListenerorg.springframework.web.context.request.RequestContextListenercom.ljwm.ibei.listener.ContextFinalizer

我把写在applicationContext中,把写在applicationContext-mvc中,发现aop没有执行,后来经过尝试发现,因为在初始化DispatchServlet的时候加载了mvc的配置,但是aop的代理却没有加载,导致其不能执行,我猜测是因为spring默认bean是单例的,
对已经初始化的bean容器不在做后续处理,由于是先加载的mvc所以是aop失效,我把aop代理的那个放到mvc中,aop就能执行了,不知道我的猜测对不对,还望大神赐教
另一个问题:
springmvc在controller层使用aop切面不成功解决 需要在配置文件中加入

【SpringMVC记录我遇到的坑_AOP注解无效|SpringMVC记录我遇到的坑_AOP注解无效,切面不执行的解决】以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

    推荐阅读