Spring框架 (12) —— AOP 专业名词解释、AOP概述、案例中问题、什么是动态代理技术?

AOP 专业名词解释

在这里插入图片描述

AOP概述

什么是AOP, 面向切面编程

AOP为Aspect Oriented Programming的缩写, 意为:面向切面编程, 通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术. AOP是OOP的延续, 是函数式编程的一种衍生范型. 利用AOP可以对业务逻辑的各个部分进行隔离, 从而使得业务逻辑各部分之间的耦合度降低, 提高程序的可重用性, 同时提高了开发的效率. -解耦

传统开发模型: 纵向的编程

传统开发模型: 纵向的编程

面向切面编程: 纵横配合的编程

面向切面编程: 纵横配合的编程
在这里插入图片描述

AOP的作用及优势

作用:
在程序运行期间,不修改任何相关源码对已有方法进行增强。
优势:
减少重复代码、提高开发效率、维护方便

AOP的实现方式

使用动态代理模式来实现

案例中问题

模拟事务管理器

public class TransactionManagerHandler {
	public void begin() {
		System.out.println("开启事务");
	}
	
	public void commit() {
		System.out.println("提交事务");
	}
	
	public void rollback() {
		System.out.println("回滚事务");
	}
	
	public void close() {
		System.out.println("关闭session");
	}
}

Service层代码

public class UserServiceImpl implements UserService {
	// 引入事务管理器
	private TransactionManagerHandler txManager = new TransactionManagerHandler();

	@Override
	public void insert(String username) {
		try {
			txManager.begin();
			System.out.println("调用dao层插入方法");
			txManager.commit();
		} catch (Exception e) {
			txManager.rollback();
		} finally {
			txManager.close();
		}
	}

	@Override
	public void update(String username) {
		try {
			txManager.begin();
			System.out.println("调用dao层修改方法");
			txManager.commit();
		} catch (Exception e) {
			txManager.rollback();
		} finally {
			txManager.close();
		}
	}
}

存在的问题

我们的事务控制的代码是重复性的。这还只是一个业务类,如果有多个业务了,每个业务类中都会有这些重复性的代码。是不是重复代码太多了?
思考:我们有什么办法解决这个问题吗?

解决上述问题的方案

  1. JDK的动态代理 - Java官方
  2. CGLIB动态代理 -第三方组织开源
  3. Spring的AOP技术(底层就是JDK动态代理和CGLIB代理技术)

什么是动态代理技术?

Java中的动态代理,就是使用者使用的不是真实的对象,而是使用的一个代理对象,而这个代理对象中包含的就是真实的对象,代理对象就是不改变原有对象的功能方法的基础之上封装新的功能

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值