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” }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!