Spring AOP 描述的例子(使用AOP记录日志)

本文探讨了如何利用AOP(面向切面编程)技术实现日志管理系统,通过自定义注解PostLog,实现了对PostController中操作的日志记录,包括保存/修改等关键操作,确保了系统的透明性和可追溯性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

日志,需要记录管理员操作日志,

 

这里需要传递2个参数, 文章的编号, 和 SESSION

 

@Aspect

@Controller

public class ControllerAopTest {

 

 

@Pointcut(

value = "execution(* net.watermelon.cms.web.PostController.*(java.lang.Integer,*,javax.servlet.http.HttpServletRequest,..)) && args(id,*,request,..)",  

    argNames = "id,request")   //注意那个 args(id,..) 这样才能找到

private void p(Integer id,HttpServletRequest request){//此切入点的签名可以在别处调用此定义  

 

 

 

@After(value="p(id,request)",argNames = "id,request")

private void  afterP(JoinPoint joinPoint,Integer id,HttpServletRequest request){  //JoinPoint 放在第一个参数

UserSession userSession = (UserSession) request.getSession().getAttribute("userSession");

   Signature signature = joinPoint.getSignature();

       MethodSignature methodSignature = (MethodSignature) signature;  

       Method method = methodSignature.getMethod();  

         method.getName(); 

       if(method != null) //写入库吧

       {

       

       PostAdminOpro postAdminOpro = new PostAdminOpro();

       

       postAdminOpro.setOperDate(new Date());

       postAdminOpro.setOperName(method.getAnnotation(PostLog.class).value());

       postAdminOpro.setPostId(id);

       postAdminOpro.setUserId(userSession.getUserLoginId());

       commonManager.save(postAdminOpro);

       

       }

 

}

 

 

PostController 类似这样的函数

 

       @PostLog("保存/修改")

@RequestMapping("/savePost.do")

public String savePost(@ModelAttribute Post post, BindingResult result,

SessionStatus status, HttpServletRequest request,

HttpServletResponse response) {

 

 

 

       @PostLog("保存/修改")  是自定义的注释

 

 

这样写:

 

 

@Target({ElementType.METHOD})  

@Retention(RetentionPolicy.RUNTIME)

public @interface PostLog{

 

String value() default "";

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

guanry

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值