spring 切面aop实现

切面层

复制代码
@Aspect //作用是把当前类标识为一个切面供容器读取
@Component //把普通pojo实例化到spring容器中,相当于配置文件中的 <bean id="" class=""/>
public class LogInfoAspect {

   //value = "指向注解类" 用于调用切面功能 @Pointcut(value
= "@annotation(com.main.entity.annotation.LogInfo)") public void LogInfoAspect(){ }

   //@Around:环绕增强,相当于MethodInterceptor
   //@AfterReturning:后置增强,相当于AfterReturningAdvice,方法正常退出时执行
   //@Before:标识一个前置增强方法,相当于BeforeAdvice的功能
//@AfterThrowing:异常抛出增强,相当于ThrowsAdvice
  //
@After: final增强,不管是抛出异常或者正常退出都会执行
// 在这里定义前置切面
    @Before("LogInfoAspect()")
    public void beforeMethod(JoinPoint joinPoint) {

        // 这里执行保存日志的动作
        System.out.println("before .......");
        //得到被切方法的参数
        System.out.println(joinPoint.getArgs()[0]);
    }
}
复制代码

 写一个注解

@Retention(RetentionPolicy.RUNTIME)
@Documented
@Target(ElementType.METHOD)  //定义方法上
public @interface LogInfo {
    boolean value() default true;
}

Controller层

@LogInfo
    @RequestMapping(value = "/trrtt")
    public String trrtt(HttpServletRequest request, Model model) {
      return “success”
    }

 

posted @   李蚊秀香  阅读(71)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示