【spring aop切面】基础使用教程
2017-09-21 16:08
459 查看
package tpf.aspect; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.aspectj.lang.JoinPoint; import org.aspectj.lang.ProceedingJoinPoint; import org.aspectj.lang.annotation.*; import org.springframework.stereotype.Component; import java.util.Arrays; import java.util.HashMap; import java.util.Map; /** * Created by zipon on 2017/9/20. */ @Aspect @Component public class AspectTest { private final static Log logger = LogFactory.getLog(AspectTest.class); private String joinPointInfo(JoinPoint joinPoint) { return simpleJoinPointInfo(joinPoint) + " args:" + Arrays.toString(joinPoint.getArgs()); } private String simpleJoinPointInfo(JoinPoint joinPoint) { return joinPoint.getTarget().getClass() + "#" + joinPoint.getSignature().getName(); } //定义切点 @Pointcut("execution(* tpf.controller.loginController.* (..))") public void cutPublicMethod() { } @Before("cutPublicMethod()") public void logBefore(JoinPoint pjp) throws Throwable { } @AfterReturning("cutPublicMethod()") public void logAfter(JoinPoint pjp) throws Throwable { } @Around("cutPublicMethod()") public Object consumingAround(ProceedingJoinPoint joinPoint) throws Throwable { System.out.println("**************登陆开始**************"); String joinPointInfo = joinPointInfo(joinPoint); String simpleJoinPointInfo = simpleJoinPointInfo(joinPoint); long startTime = System.currentTimeMillis(); logger.info("[API_START]" + joinPointInfo); Object[] args = joinPoint.getArgs(); Object obj = joinPoint.proceed(args); // logger.info("[API_END]" + simpleJoinPointInfo); long endTime = System.currentTimeMillis(); long diffTime = endTime - startTime; Map<String, String> map = new HashMap<String, String>(); map.put("method", simpleJoinPointInfo); map.put("time", String.valueOf(diffTime)); map.put("start", String.valueOf(startTime)); map.put("end", String.valueOf(endTime)); //方法执行完,要用joinPoint.proceed(); joinPoint.proceed(); System.out.println("==================登陆结束后=================="); return obj; } }
相关文章推荐
- SpringBoot基础教程2-1-6 日志规范-使用AOP统一处理Web日志
- Spring整理12 -- 面对切面(AOP)3 -- 使用CGLIB实现AOP
- 关于spring切面使用<aop:aspectj-autoproxy/>报错的解决方法
- spring学习笔记7--使用spring进行面向切面的(AOP)编程(1)注解方式实现
- Spring AOP使用整理:使用@AspectJ风格的切面声明
- 使用Spring进行切面(AOP)编程
- Spring整理13 -- 面对切面(AOP)3 -- 使用CGLIB实现AOP
- Spring 切面 AOP基础 之三
- 使用Spring进行面向切面(AOP)编程
- Spring 基础教程之五:AOP编程介绍
- 使用Spring进行切面(AOP)编程
- spring 学习(1.4) 入门基础- AOP教程
- Spring 切面 AOP基础 之四
- Spring AOP使用配置介绍(二):切面的配置
- 15_传智播客Spring2.5视频教程_使用JDK中的Proxy技术实现AOP功能 2
- Spring 使用Aop 做切面日志,和权限。
- Spring(十一)使用Spring的注解方式实现面向切面技术AOP
- Spring AOP:使用NameMatchMethodPointcutAdvisor实现切面编程
- Spring 切面 AOP基础 之一
- Spring整理13 -- 面对切面(AOP)3 -- 使用CGLIB实现AOP