首页 > 编程语言 >AOP(面向切面编程)

AOP(面向切面编程)

时间:2024-11-12 20:47:04浏览次数:3  
标签:void 编程 System 切入点 切面 AOP println public

五、AOP

(1)AOP简介
  • 1.AOP(Aspect Oriented Programming)面向切面编程,一种编程范式,指导开发者如何组织程序结构
    • OOP(Object Oriented Programming)面向对象编程

  • 2.作用:在不惊动原始设计的基础上为其进行功能增强
  • 3.Spring理念:无入侵式/无侵入式
(2)核心概念
  • 连接点(JoinPoint)
    • 程序执行过程中的任意位置,粒度为执行方法、抛出异常、设置变量等

    • 在Spring中,理解为==》方法的执行

  • 切入点(PointCut)
    • 匹配切入点的式子

    • 在SpringAOP中,一个切入点可以只描述一个具体方法,也可以匹配多个方法

      • 一个具体方法:com.project.dao包下的BookDao接口中的无形参无返回值的save方法

      • 匹配多个方法:所有的save方法,所有的get开头的方法,所有以Dao结尾的接口中的任意方法,所有带有一个参数的方法

  • 通知(Advice)
    • 在切入点处执行的操作,也就是共性功能

      • 在SpringAOP中,功能最终以方法的形式呈现

  • 通知类
    • 定义通知的类

  • 切面(Aspect)
    • 描述通知和切入点的对应关系

(3)AOP入门案例思路分析
  • 案例设定:测试接口执行效率
  • 简化设定:在接口执行前输出当前系统时间
  • 开发模式:XML or 注解
  • 思路分析:
    • 1.导入坐标(pom.xml)
      • AOP的依赖Spring自动绑定的,此外还需单独绑定Aspect的依赖==>aspectjweaver

      <dependency>
          <groupId>org.aspectj</groupId>
          <artifactId>aspectjweaver</artifactId>
          <version>1.9.7</version>
      </dependency>
    • 2.制作连接点所在的Dao接口及其实现类并编写其方法
      • UserDao接口

      public interface UserDao {
          void save();
          void delete();
          void update();
      }
      • UserImpl实现类

      @Repository
      public class UserImpl implements UserDao {
          public void save() {
              System.out.println(System.currentTimeMillis());
              System.out.println("save is running...");
          }
          public void delete() {
              System.out.println("delete is running...");
          }
          public void update() {
              System.out.println("update is running...");
          }
      }
    • 3.制作共性功能(通知类与通知)
      • 使用@Component将其定义成bean,让容器进行管理

      • 使用@Aspect设定切面类(AOP)

      @Component
      @Aspect
      public class Advice {...}
    • 4.定义切入点
      • 使用@Pointcut定义切入点==>一个空参空方法体无返回值的方法

      • @Pointcut的参数是匹配需要加强的连接点即方法,未匹配的连接点不会执行加强的功能

      @Pointcut("execution(void com.aop.dao.impl.UserImpl.update())")
      public void method(){}
    • 5.绑定切入点与通知的关系(切面
      • 使用@Before定义通知类型,在连接点执行前进行执行通知

      @Before("method()")
      public void before(){
          System.out.println("当前系统时间:"+System.currentTimeMillis());   
          System.out.println(System.currentTimeMillis());
      }
    • 6.在以上步骤完成后,需要在spring的配置类SpringConfig中,使用@EnableAspectJAutoProxy注解向容器告知AOP是使用注解开发的,然后读取通知类中@Aspect,进而运行所需要增强的功能

标签:void,编程,System,切入点,切面,AOP,println,public
From: https://blog.csdn.net/weixin_63655614/article/details/143695883

相关文章

  • 【异常管理(全局异常处理器)】|【事务管理(使用AOP)】
    本篇主要介绍项目开发中两个比较基础但是非常重要的模块,异常管理和事务管理,如何去使用进行了介绍,着重对AOP的使用进行了介绍,实现一个基于AOP的简单案例:定位耗时较长的业务方法,统计部分业务方法的执行耗时。一、全局异常处理器需求:软件开发springboot项目过程中,不可避免的......
  • 信步漫谈之自定义AOP注释
    目录1目标2AOP基本概念3AOP之Execution表达式解释4AOP注释执行顺序5知识池6源码7参考资料(感谢)1目标自定义注释的AOP实现2AOP基本概念Aspect【切面】:通常是一个类,里面可以定义切入点和通知;JointPoint【连接点】:程序执行过程中明确的点,一般是方法的调用;Advice......
  • Go语言并发编程:轻松驾驭多线程世界(九)
    Go语言并发编程:轻松驾驭多线程世界在这里插入图片描述在现代编程中,并发是让你的程序变得更强大、更高效的关键技能。幸运的是,Go语言提供了一种简单、直观的方式来处理并发任务,使用轻量级的Goroutine和Channel,让我们能够像指挥交通一样简单地处理多个任务。今天,我们将......
  • Go 语言已立足主流,编程语言排行榜24 年 11 月
    Go语言概述Go语言,简称Golang,是由Google的RobertGriesemer、RobPike和KenThompson在2007年设计,并于2009年11月正式宣布推出的静态类型、编译型开源编程语言。Go语言以其提高编程效率、软件构建速度和运行时性能的设计目标,以及简洁的语法、快速的编译速度和出色的并发处理能......
  • ResumeSDK简历解析库编程案例
    目录1、软件概述2、编程案例2.1、官网案例(阿里云)2.2、优化案例3、解析结果1、软件概述ResumeSDK简历解析是北京无奇科技有限公司研发,业界领先的智能简历解析和人岗匹配算法厂商,提供专业的AI招聘技术服务,致力于人力资源行业智能化这一进程。并已经上线阿里云或腾讯云,......
  • 深入 Java 多线程:解锁并发编程的奥秘
    在当今的软件开发世界中,性能和高并发是衡量一个应用程序成败的关键因素。无论是处理高流量的网络请求、执行复杂的数据分析任务,还是管理后台服务中的资源,Java多线程编程都是开发者必备的技能之一。本文将带领你深入Java多线程的世界,解锁并发编程的奥秘。1.并发与并行的区......
  • 《TCP/IP网络编程》学习笔记 | Chapter 11:进程间通信
    《TCP/IP网络编程》学习笔记|Chapter11:进程间通信《TCP/IP网络编程》学习笔记|Chapter11:进程间通信进程间通信的基本概念通过管道实现进程间通信通过管道进行进程间双向通信运用进程间通信习题(1)什么是进程间通信?分别从概念和内存的角度进行说明。(2)进程间通信需要......
  • 【JAVA】Java基础—面向对象编程:构造方法-实现一个Car类,包含多个构造方法,创建不同的汽
    在Java中,构造方法则是用于创建对象的特殊方法。通过构造方法,可以在创建对象时初始化其属性。构造方法的重载允许我们根据不同的需求定义多个构造方法,从而灵活地创建对象。我们可以将汽车的构造方法比作汽车的配置选项。比如,当你购买一辆汽车时,你可以选择不同的配置,如颜色、型......
  • Spring Boot编程训练系统:微服务架构实现
    摘要随着信息技术在管理上越来越深入而广泛的应用,管理信息系统的实施在技术上已逐步成熟。本文介绍了编程训练系统的开发全过程。通过分析编程训练系统管理的不足,创建了一个计算机管理编程训练系统的方案。文章介绍了编程训练系统的系统分析部分,包括可行性分析等,系统设计部......
  • Spring Boot编程训练系统:数据管理与存储
    摘要随着信息技术在管理上越来越深入而广泛的应用,管理信息系统的实施在技术上已逐步成熟。本文介绍了编程训练系统的开发全过程。通过分析编程训练系统管理的不足,创建了一个计算机管理编程训练系统的方案。文章介绍了编程训练系统的系统分析部分,包括可行性分析等,系统设计部......