对于Java中AOP的初步理解1.0

一、什么是AOP

AOP(Aspect-Oriented Programming)中文翻译为面向切面编程,面向方面编程

在Spring AOP中,可以理解为就是面向方法编程,是一种编程思想

二、AOP应用场景

•在不修改目标方法的源代码的前提下,Spring AOP对请求链路上的目标方法进行运行耗时的统计

∙Spring AOP底层通过动态代理机制实现对目标方法的编程,动态代理是目前面向方法编程最主流的实现技术

∙其他应用场景,比如

①给目标方法添加事务管理

②给目标方法添加访问权限控制

③对目标方法进行读写分离,save、update、delete操作一个数据源,select操作另一个数据源

编程步骤:

1.导入工程

2.编写统计目标方法运行耗时的代码

3.添加AOP相关注解@Around、@Aspect

导入依赖:在 pom.xml 文件中导入 AOP 的依赖

xml 复制代码
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-aop</artifactId>
</dependency>

代码案列:

java 复制代码
@Aspect
@Component
public class TliasAdvice {

    @Around("execution(* com.itheima.boottlias.*.*.page(..))")
    //统计目标方法运行的耗时时间
    public Object method(ProceedingJoinPoint pjp)throws Throwable{ //pjp代表了目标方法
        //1.目标方法运行前,记录当前系统的时间start
        long start = System.nanoTime();
        //2.执行目标方法
        Object result = pjp.proceed();
        //3.目标方法运行后,记录当前系统的时间end
        long end = System.nanoTime();
        //4.end-start就是目标方法的运行时间
        System.out.println("目标方法"+pjp.toShortString()+"的运行时间是"+(end-start)+"纳秒");
        return result;
    }
}

其中.page方法是自己代码中Controller中的一个方法名,此处可以举一反三

代码的实际运行效果如上图中控制台所示,其中如果运行未能显示最可能的原因就是在注解@Around中对于包的结构没有编写正确,首先依据自己的项目结构,按照层级依次写入包的名称,最后编写需要统计运行时间的方法名称

相关推荐
我的xiaodoujiao5 分钟前
Django 基础知识详细图文教程 16-Django 内置Admin认证系统
后端·python·django
程序员鱼皮7 分钟前
Personal Agent 是什么?为什么大厂都抢着做?连 DeepSeek Bot 都来了。。
前端·后端·ai编程
geovindu15 分钟前
rust: Chain of Responsibility Pattern
开发语言·后端·设计模式·rust·责任链模式·行为模式
m0_5873830015 分钟前
碰碰好评卡功能落地全流程实战指南 附核心逻辑与常见问题解决方案
java·前端·数据库·后端·struts·需求分析
dd聊技术16 分钟前
给检索改动装一盏红绿灯:评测门禁怎么建、怎么用
人工智能·后端
acd1200921 分钟前
Go 里 err 被不经意覆盖的几个现场
开发语言·后端·golang
合尘猫26 分钟前
给客服系统加一道闸:把「该转人工」从模糊判断变成可测拦截
人工智能·后端·程序员
掘金者阿豪39 分钟前
数据集成软件不能只看“同步成功”:聊聊金仓 KFS 和订单数据同步这件事
前端·后端
我的div丢了肿么办41 分钟前
go语言通过反射来操作结构体中的数据
后端·go
imDwAaY1 小时前
进程之间如何“对话”?一篇讲清六种进程间通信方式
后端·操作系统