SpringAOP拦截Controller,Service实现日志管理(自定义注解的方式)

本文展示了如何使用Spring AOP通过自定义注解的方式实现对Controller和服务层的方法进行日志管理。详细介绍了如何定义切点、注解、切面,并提供了拦截Controller和Service的方法,记录用户的操作日志和异常信息。
摘要由CSDN通过智能技术生成
  1. package com.wssys.framework;  
  2.   
  3. import java.lang.reflect.Method;  
  4. import java.text.SimpleDateFormat;  
  5. import java.util.Calendar;  
  6.   
  7. import javax.servlet.http.HttpServletRequest;  
  8. import org.apache.shiro.SecurityUtils;  
  9. import org.aspectj.lang.ProceedingJoinPoint;  
  10. import org.aspectj.lang.annotation.Around;  
  11. import org.aspectj.lang.annotation.Aspect;  
  12. import org.aspectj.lang.annotation.Pointcut;  
  13. import org.springframework.beans.factory.annotation.Autowired;  
  14. import org.springframework.stereotype.Component;  
  15. import org.springframework.web.context.request.RequestContextHolder;  
  16. import org.springframework.web.context.request.ServletRequestAttributes;  
  17.   
  18. import com.wssys.bean.BolBean;  
  19. import com.wssys.bean.ComPanyForm;  
  20. import com.wssys.bean.DeliverBean;  
  21. import com.wssys.bean.GoodsForm;  
  22. import com.wssys.dao.SyslogDao;  
  23. import com.wssys.entity.Companycontacts;  
  24. import com.wssys.entity.PusFrontUser;  
  25. import com.wssys.entity.PusMenu;  
  26. import com.wssys.entity.PusRole;  
  27. import com.wssys.entity.PusSysUser;  
  28. import com.wssys.entity.Syslog;  
  29. import com.wssys.utils.StringUtil;  
  30. import com.wssys.utils.TCPIPUtil;  
  31.   
  32. /** 
  33.  * \ 
  34.  *  
  35.  * @Aspect 实现spring aop 切面(Aspect): 
  36.  *         一个关注点的模块化,这个关注点可能会横切多个对象。事务管理是J2EE应用中一个关于横切关注点的很好的例子。 在Spring 
  37.  *         AOP中,切面可以使用通用类(基于模式的风格) 或者在普通类中以 @Aspect 注解(@AspectJ风格)来实现。 
  38.  *  
  39.  *         AOP代理(AOP Proxy): AOP框架创建的对象,用来实现切面契约(aspect contract)(包括通知方法执行等功能)。 
  40.  *         在Spring中,AOP代理可以是JDK动态代理或者CGLIB代理。 注意:Spring 
  41.  *         2.0最新引入的基于模式(schema-based 
  42.  *         )风格和@AspectJ注解风格的切面声明,对于使用这些风格的用户来说,代理的创建是透明的。 
  43.  * @author q 
  44.  *  
  45.  */  
  46. @Component  
  47. @Aspect  
  48. public class LogService {  
  49.   
  50.     @Autowired  
  51.     private SyslogDao syslogDao;  
  52.   
  53.     public LogService() {  
  54.         System.out.println("Aop");  
  55.     }  
  56.   
  57.     /** 
  58.      * 在Spring 
  59.      * 2.0中,Pointcut的定义包括两个部分:Pointcut表示式(expression)和Pointcut签名(signature 
  60.      * )。让我们先看看execution表示式的格式: 
  61.      * 括号中各个pattern分别表示修饰符匹配(modifier-pattern?)、返回值匹配(ret 
  62.      * -type-pattern)、类路径匹配(declaring 
  63.      * -type-pattern?)、方法名匹配(name-pattern)、参数匹配((param 
  64.      * -pattern))、异常类型匹配(throws-pattern?),其中后面跟着“?”的是可选项。 
  65.      *  
  66.      * @param point 
  67.      * @throws Throwable 
  68.      */  
  69.   
  70.     @Pointcut("@annotation(com.wssys.framework.MethodLog)")  
  71.     public void methodCachePointcut() {  
  72.   
  73.     }  
  74.   
  75.     // // @Before("execution(* com.wssys.controller.*(..))")  
  76.     // public void logAll(JoinPoint point) throws Throwable {   
  77.     // System.out.println("打印========================");  
  78.     // }  
  79.     //  
  80.     // // @After("execution(* com.wssys.controller.*(..))")  
  81.     // public void after() {   
  82.     // System.out.println("after"
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值