AOP入门讲解及相关概念

本文介绍了AOP(面向切面编程)的概念,如何在不改变原有代码结构的情况下为BookDaoImpl类的save方法添加计时功能,并探讨了如何通过通知、切入点和切面来实现不同方法的功能增强。SpringAOP在此过程中起到了关键作用。
摘要由CSDN通过智能技术生成

什么是AOP?

AOP(Aspect Oriented Programming)面向切面编程,一种编程范式,指导开发者如何组织程序结构。

AOP的作用:

在不惊动原始设计的基础上为其进行功能增强,类似于代理模式

背景代码:


1@Repository
2public class BookDaoImpl implements BookDao {
3	public void save() {
4		//记录程序当前执行执行(开始时间)
5 		Long startTime = System.currentTimeMillis();
6 		//业务执行万次
7 		for (int i = 0;i<10000;i++) {
8 			System.out.println("book dao save ...");
9 		}
10 		//记录程序当前执行时间(结束时间)
11 		Long endTime = System.currentTimeMillis();
12 		//计算时间差
13 		Long totalTime = endTime-startTime;
14 		//输出信息
15 		System.out.println("执行万次消耗时间:" + totalTime + "ms");
16 	}
17 	public void update(){
18 		System.out.println("book dao update ...");
19 	}
20 	public void delete(){
21 		System.out.println("book dao delete ...");
22 	}
23 	public void select(){
24 		System.out.println("book dao select ...");
25 	}
26 }

问题所在: 在以上代码中,计时功能只存在于save方法中,但如果其他方法需要执行该操作,将无法执行。
因而,需要将这个模块单独抽离开,形成一个通知类,哪个方法需要使用该方法则绑定相应的切入点,形成一个切入点。===>达到一个功能增强的效果

代码优化:
在这里插入图片描述

相关概念:

  1. Spring的AOP是对一个类的方法在不进行任何修改的前提下实现增强。对于上面的案例中BookServiceImpl中有save , update , delete和select方法,这些方法我们给起了一个名字叫连接点
  2. 在BookServiceImpl的四个方法中,update和delete只有打印没有计算万次执行消耗时间,
    但是在运行的时候已经有该功能,那也就是说update和delete方法都已经被增强,所以对于需要增强的方法我们给起了一个名字叫切入点
  3. 执行BookServiceImpl的update和delete方法的时候都被添加了一个计算万次执行消耗时间的功能,将这个功能抽取到一个方法中,换句话说就是存放共性功能的方法,我们给起了个名字叫通知
  4. 通知是要增强的内容,会有多个,切入点是需要被增强的方法,也会有多个,那哪个切入点需要添加哪个通知,就需要提前将它们之间的关系描述清楚,那么对于通知和切入点之间的关系描述,我们给起了个名字叫切面
  5. 通知是一个方法,方法不能独立存在需要被写在一个类中,这个类我们也给起了个名字叫通知类
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值