Aspect切面的使用实例
一、导入切面库
以maven工程为例,除了springmvc基础的库,需要导入切面库,本例aspectj为例。
<properties>
<aspectj.version>1.9.</aspectj.version>
</properties>
......
<!-- https://mvnrepository.com/artifact/org.aspectj/aspectjweaver -->
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>${aspectj.version}</version>
</dependency>
二、编写基础植入的类,以打印功能为例。
不得不歌颂一下注解和Spring,引入和配置大大的简化了。
@Aspect
@Slf4j
@Component
public class LogAspectUtil {
@Pointcut("execution(public * com.sanro.controller..*.*(..))")//配置需要植入打印的包路径
public void controllerLog() {
} @Before("controllerLog()")
public void logBefore(JoinPoint joinPoint) {
RequestAttributes requestAttributes = RequestContextHolder.getRequestAttributes();
HttpServletRequest request = ((ServletRequestAttributes) requestAttributes).getRequest();
log.info("full url = " + request.getRequestURL().toString());
log.info("http method = " + request.getMethod());
log.info("class method = " + joinPoint.getSignature().getDeclaringTypeName() + "." + joinPoint.getSignature().getName());
} @After("controllerLog()")
public void logAfter(JoinPoint joinPoint) {
log.info("controller execute finished... ");
} }
三、坐享其成
现在com.sanro.controller目录下的所有controller类都能
1. 在请求进入的时候自动打印请求的url,method等想要的信息和处理动作;
2. 在请求处理结束的时候都能打印时间或者增加想要的处理动作。
Aspect切面的使用实例的更多相关文章
- Spring @Aspect切面参数传递
		Spring @Aspect切面参数传递: Xml: <?xml version="1.0" encoding="UTF-8"?> <bean ... 
- AOP面向切面编程C#实例
		原创: eleven 原文:https://mp.weixin.qq.com/s/8klfhCkagOxlF1R0qfZsgg [前言] AOP(Aspect-Oriented Programming ... 
- spring框架aop用注解形式注入Aspect切面无效的问题解决
		由于到最后我的项目还是有个邪门的错没解决,所以先把文章大概内容告知: 1.spring框架aop注解扫描默认是关闭的,得手动开启. 2.关于Con't call commit when autocom ... 
- SpringBoot使用Aspect切面拦截打印请求参数
		引入依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>sp ... 
- Aspect 切面?
		AOP核心就是切面,它将多个类的通用行为封装成可重用的模块,该模块含有一组API提供横切功能.比如,一个日志模块可以被称作日志的AOP切面.根据需求的不同,一个应用程序可以有若干切面.在Spring ... 
- async异步注解和aspect切面注解等注解的原理
		在我们使用spring框架的过程中,在很多时候我们会使用@async注解来异步执行某一些方法,提高系统的执行效率.今天我们来探讨下spring是如何完成这个功能的. 1.spring 在扫描bean的 ... 
- spring3: 切面及通知实例 Aspectj的aop
		1.前置通知 接口: package chapter1.server; public interface IHelloService { public void sayAdvisorBefore(St ... 
- Spring的Aspect切面类不能拦截Controller中的方法
		根本原因在于<aop:aspectj-autoproxy />这句话是在spring的配置文件内,还是在springmvc的配置文件内.如果是在spring的配置文件内,则@Control ... 
- 使用@Aspect切面进行让JDBC自动关闭(Spring AOP)
		原生jdbc进行测试 demo:https://github.com/weibanggang/springjdbcAspect.git 
随机推荐
- 常识之外:全表扫描为何产生大量 db file sequential read 单块读?
			原创 2016-07-05 熊军 Oracle 编辑手记:在理解Oracle技术细节时,我们不仅应该读懂概念,还要能够通过测试验证细节,理解那些『功夫在诗外』的部分,例如全表扫描和单块读. 开发人 ... 
- PHP实现微信对账单处理
			最近要做支付对账,即检查第三方支付与数据库中账单是否一一对应,涉及到微信对账单的处理,成功时,微信账单接口返回数据以文本表格的方式返回,第一行为表头,后面各行为对应的字段内容,字段内容跟查询订单或退款 ... 
- MySQL 5.7开始支持JSON,那还有必要使用MongoDB存JSON吗?请列出你的观点/理由。
			一.观点A:支持MySQL存储JSON MongoDB不支持事务,而MySQL支持事务 MySQL相对MongoDB而言,MySQL的稳定性要优于MongoDB MySQL支持多种存储引擎 二.观点B ... 
- ss-套接字监控工具
			ss(Socket Statistics) - another utility to investigate sockets(研究套接字的另一个实用程序,原先的是netstat) ss用于转储套接字统 ... 
- Python,for循环小例子--99乘法表
			一.99乘法表 for i in range(1, 10): for j in range(1, i + 1): print('%sx%s=%s ' % (j, i, j * i), end='') ... 
- 如何进行SQL注入攻击?
			1.数字注入 2.字符串注入 3. #后边全部为注释,字符串拼装后绕过密码验证. 4. 同样绕过密码验证 
- 利用avicap32.dll实现的实时视频传输
			直接上代码吧! 在窗体上调用的类: using System; using System.Collections.Generic; using System.ComponentModel; using ... 
- postgres —— 分组集与部分聚集
			创建表 create table t_oil ( region text, country text, year text, production int, comsumption int ) 导入数 ... 
- 在Windows10系统下安装Oracle 11g数据库
			在Windows10系统下安装Oracle 11g数据库 https://blog.csdn.net/wei1992_6/article/details/60054727 
- 【NOIP 2017】宝藏 D2 T2
			参考From 传送门 写的很清晰了 AC code: #include <bits/stdc++.h> using namespace std; const int MAXN = 12; ... 
