- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章SpringMVC记录我遇到的坑_AOP注解无效,切面不执行的解决由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
想做一个api请求日志,想到使用aop,配置过程中遇到了一个坑,aop不起作用, 。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
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
@Configuration
public
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的 。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
|
<
web-app
xmlns
=
"http://java.sun.com/xml/ns/javaee"
xmlns:xsi
=
"http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
version
=
"3.0"
>
<
display-name
>Archetype Created Web Application</
display-name
>
<
filter
>
<
filter-name
>shiroFilter</
filter-name
>
<
filter-class
>org.springframework.web.filter.DelegatingFilterProxy</
filter-class
>
<
init-param
>
<
param-name
>targetFilterLifecycle</
param-name
>
<
param-value
>true</
param-value
>
</
init-param
>
</
filter
>
<
filter-mapping
>
<
filter-name
>shiroFilter</
filter-name
>
<
url-pattern
>/*</
url-pattern
>
</
filter-mapping
>
<
servlet
>
<
servlet-name
>spring-dispatcher</
servlet-name
>
<
servlet-class
>
org.springframework.web.servlet.DispatcherServlet
</
servlet-class
>
<
init-param
>
<
param-name
>contextConfigLocation</
param-name
>
<
param-value
>classpath:spring/applicationContext-mvc.xml</
param-value
>
</
init-param
>
<
load-on-startup
>1</
load-on-startup
>
</
servlet
>
<
servlet-mapping
>
<
servlet-name
>spring-dispatcher</
servlet-name
>
<
url-pattern
>/</
url-pattern
>
</
servlet-mapping
>
<
context-param
>
<
param-name
>contextConfigLocation</
param-name
>
<
param-value
>classpath:spring/applicationContext*.xml</
param-value
>
</
context-param
>
<
filter
>
<
filter-name
>characterEncodingFilter</
filter-name
>
<
filter-class
>org.springframework.web.filter.CharacterEncodingFilter</
filter-class
>
<
init-param
>
<
param-name
>encoding</
param-name
>
<
param-value
>UTF-8</
param-value
>
</
init-param
>
<
init-param
>
<
param-name
>forceEncoding</
param-name
>
<
param-value
>true</
param-value
>
</
init-param
>
</
filter
>
<
filter-mapping
>
<
filter-name
>characterEncodingFilter</
filter-name
>
<
url-pattern
>/*</
url-pattern
>
</
filter-mapping
>
<
listener
>
<
listener-class
>org.springframework.web.context.ContextLoaderListener</
listener-class
>
</
listener
>
<
listener
>
<
listener-class
>org.springframework.web.context.request.RequestContextListener</
listener-class
>
</
listener
>
<
listener
>
<
listener-class
>com.ljwm.ibei.listener.ContextFinalizer</
listener-class
>
</
listener
>
</
web-app
>
|
我把<aop:aspectj-autoproxy proxy-target-class="true"/>写在applicationContext中,把<context:component-scan> 和 <mvc:annotation-driven>写在applicationContext-mvc中,发现aop没有执行,后来经过尝试发现,因为在初始化DispatchServlet的时候加载了mvc的配置,但是aop的代理却没有加载,导致其不能执行,我猜测是因为spring默认bean是单例的, 。
对已经初始化的bean容器不在做后续处理,由于是先加载的mvc所以是aop失效,我把aop代理的那个放到mvc中,aop就能执行了,不知道我的猜测对不对,还望大神赐教 。
另一个问题:
1
|
<aop:aspectj-autoproxy proxy-target-
class
=
"true"
/>
|
以上为个人经验,希望能给大家一个参考,也希望大家多多支持我.
原文链接:https://blog.csdn.net/z781582206/article/details/77894774 。
最后此篇关于SpringMVC记录我遇到的坑_AOP注解无效,切面不执行的解决的文章就讲到这里了,如果你想了解更多关于SpringMVC记录我遇到的坑_AOP注解无效,切面不执行的解决的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
我是一名优秀的程序员,十分优秀!