首页 > 其他分享 >Spring AOP

Spring AOP

时间:2024-09-18 21:20:28浏览次数:10  
标签:Spring 编程 耗时 AOP 执行 方法 pjp

1.什么是AOP

  • AOP(Aspect-Oriented Programming)中文翻译为面向切面编程,面向方面编程
  • 在AOP中,可以理解为就是面向方法编程

2.AOP的应用场景

我们这里有一个项目,项目中开发了很多的业务功能在这里插入图片描述然而有一些业务功能执行效率比较低,执行耗时较长,我们需要针对于这些业务方法进行优化。 那首先第一步就需要定位出执行耗时比较长的业务方法并且在不修改源代码的情况下,再针对于业务方法再来进行优化。

而AOP面向方法编程,就可以做到在不改动这些原始方法的基础上,针对特定的方法进行功能的增强。AOP底层通过动态代理机制实现对目标方法的编程,动态代理是目前面向方法编程最主流的实现技术。

AOP的其他场景:
  1. 给目标方法添加事务管理
  2. 给目标方法添加访问权限控制
  3. 对目标方法进行读写分离,save、update、delete操作一个数据源,select操作另一个数据源
  4. 等等

AOP快速入门

需求: 统计各个业务层方法执行耗时。

实现步骤:

  1. 导入依赖:在pom.xml中导入AOP的依赖
  2. 编写AOP程序:针对于特定方法根据业务需要进行编程
  3. 添加注解:@Around、@Aspec在这里插入代码片t…

pom.xml

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-aop</artifactId>
</dependency>

AOP程序:TimeAspect

@Component
@Aspect //当前类为切面类
@Slf4j
public class TimeAspect {

    @Around("execution(* com.itheima.service.*.*(..))") 
    public Object recordTime(ProceedingJoinPoint pjp) throws Throwable { //pjp: 代表了目标方法
        //记录方法执行开始时间
        long begin = System.currentTimeMillis();

        //执行目标方法
        Object result = pjp.proceed();

        //记录方法执行结束时间
        long end = System.currentTimeMillis();

        //计算方法执行耗时
        log.info(pjp.getSignature()+"执行耗时: {}毫秒",end-begin);

        return result;
    }
}

重新启动SpringBoot服务测试程序:

  • 查询3号部门信息
    -在这里插入图片描述在这里插入图片描述
    优点:
  • 代码无侵入:没有修改原始的业务方法,就已经对原始的业务方法进行了功能的增强或者是功能的改变
  • 减少了重复代码
  • 提高开发效率
  • 维护方便

标签:Spring,编程,耗时,AOP,执行,方法,pjp
From: https://blog.csdn.net/yrc1314/article/details/142342225

相关文章

  • springboot连接hive数据库的依赖配置
    pom.xml1<?xmlversion="1.0"encoding="UTF-8"?>2<projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"3xsi:schemaLocation="http://......
  • springboot+vue疫情监控系统【开题+程序+论文】
    系统程序文件列表开题报告内容研究背景近年来,全球范围内频繁爆发的疫情不仅严重威胁着人类生命健康,也对社会经济活动造成了巨大冲击。随着信息技术的飞速发展,构建高效、智能的疫情监控系统成为应对疫情挑战、保障公共卫生安全的重要手段。该系统旨在通过集成多源数据、运用......
  • springboot+vue疫情监控平台【开题+程序+论文】
    系统程序文件列表开题报告内容研究背景随着全球疫情的不断演变,高效、精准的疫情监控成为了保障公共卫生安全、快速响应疫情变化、减少社会经济损失的关键。传统的手工记录与信息传递方式已难以满足当前复杂多变的疫情防控需求。因此,构建一个集数据采集、分析、预警、反馈于......
  • springboot+vue疫情环境下校园宿舍管理系统【开题+程序+论文】
    系统程序文件列表开题报告内容研究背景随着全球疫情的持续影响,校园作为人员密集、流动性大的特殊场所,其疫情防控工作显得尤为重要。传统的校园宿舍管理模式在面对疫情挑战时,暴露出信息更新滞后、管理效率低下、健康监测不全面等问题。特别是在学生体温监测、宿舍出入管理、......
  • springboot+vue疫情管理系统【开题+程序+论文】
    系统程序文件列表开题报告内容研究背景近年来,全球范围内频繁爆发的疫情事件,如COVID-19,对人类社会、经济及日常生活造成了前所未有的冲击。面对疫情,高效、精准的防控管理成为了各国政府及公共卫生部门亟待解决的关键问题。传统的手工记录与管理方式已难以满足大规模疫情下的......
  • 【第12章】SpringBoot之SpringBootActuator服务监控(上)
    文章目录前言一、准备1.地址和端口配置2.引入依赖3.ActuatorProperties二、使用1.Beans(beans)2.ConfigurationProperties(configprops)3.Environment(env)4.Health(health)5.HeapDump(heapdump)6.Mappings(mappings)7.Metrics(metrics)8.ThreadD......
  • Springboot会员制医疗预约服务管理信息系统g15ia(程序+源码+数据库+调试部署+开发环境)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容一、项目背景随着人们对健康需求的日益增长,传统医疗预约方式已难以满足高效、便捷的服务需求。预约流程繁琐、信息传递效率低下等问题日益凸显。因......
  • Springboot基于Bootstrap的智能家居网站o79ok(程序+源码+数据库+调试部署+开发环境)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容随着物联网技术的迅猛发展,智能家居已成为现代家庭追求便捷、高效生活方式的重要趋势。为了响应市场需求,提升用户体验,本项目计划设计并实现一个基于B......
  • Springboot化妆品销售5571i--(程序+源码+数据库+调试部署+开发环境)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容一、项目背景随着消费者生活水平的提高和审美意识的增强,化妆品行业迎来了前所未有的发展机遇。市场上化妆品种类繁多,品牌竞争激烈,消费者对产品的品......
  • 【Java SpringBoot + Vue】打造专属动漫插画分享系统,四步掌握建站精髓,让动漫爱好者轻
    ......