@Aspect
内容目录

@Aspect

概念

@Aspect 是Spring框架提供的一个用于声明切面(Aspect)的注解,它属于面向切面编程(AOP)的核心概念之一。

切面是跨越多个对象的行为或关注点的模块化,例如事务管理就是企业级应用中的一个关注点,它可能会影响到多个对象的操作。通过使用 @Aspect,开发者能够定义这样的模块化切面,将横切关注点(如日志记录、安全性检查等)与核心业务逻辑分离,从而提高代码的可维护性和复用性。

通俗说法

想象你正在追一部电视剧,每一集都包含不同的故事情节(核心剧情),但每次开始和结束时都会有固定的片头和片尾。

这里的 @Aspect 就像是电视剧播放软件中的“自动跳过片头片尾”功能。

它智能地识别并处理这些在每集都会重复出现的部分,让观众直接进入或结束于核心内容,无需手动快进或跳过。

当你突然想改变习惯,希望看看新换的片尾曲时,只需要在设置里调整一次,之后所有剧集的观看体验就随之改变,无需每集单独操作。

这样,重复性的操作被集中管理和优化,提升了观剧的流畅度和个性化体验。

所属

@Aspect 注解是AspectJ库的一部分,Spring框架集成了AspectJ以支持AOP编程。

import org.aspectj.lang.annotation;

作用

  • 标识切面: 标记一个Java类为切面类,该类包含一个或多个切面相关的通知(Advice)、切入点(Pointcut)等。
  • 切面定义: 允许在类中定义切面逻辑,如前置通知、后置通知、环绕通知等,以及它们应用的规则(即切入点表达式)。

用法

在需要作为切面的类上使用 @Aspect 注解:

import org.aspectj.lang.annotation.Aspect;

@Aspect
public class LoggingAspect {
    // 切面逻辑,如通知方法定义
}

使用场景

  • 日志记录: 记录方法调用的开始、结束时间及参数信息。
  • 权限控制: 在方法执行前验证用户是否有权限执行该操作。
  • 性能监控: 计算方法执行时间,监控系统性能。
  • 事务管理: 自动管理数据库事务的开启、提交或回滚。
  • 异常处理: 集中处理特定异常,统一输出错误日志或进行异常转换。

使用示例

日志切面(LogAspect.java)

import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;

@Aspect // 声明这是一个切面类
public class LogAspect {

    @Before("execution(* com.example.service.*.*(..))") // 定义切入点表达式,匹配com.example.service包下的所有方法
    public void logBefore(JoinPoint joinPoint) { // JoinPoint提供关于连接点的信息
        String methodName = joinPoint.getSignature().getName();
        System.out.println("Executing: " + methodName);
    }
}

在这个例子中,@Aspect 用来标记 LogAspect 类为一个切面类,其中定义了一个前置通知 logBefore ,它会在匹配的切入点(这里是 com.example.service 包下所有方法的执行)之前被调用,负责记录即将执行的方法名。

通过这种方式,日志记录的逻辑与实际业务逻辑分离,提高了代码的清晰度和可维护性。

版权声明:本文《@Aspect》是由陶其原创撰写,首发于陶其的个人博客
转载声明:如需转载本文,请务必在转载处保留原文链接:https://www.tqazy.com/?p=73,并明确注明文章来源。
暂无评论

发送评论 编辑评论

|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇