AOP基础及底层原理

本文介绍了AOP(切面编程)的基础概念,作为OOP的横向扩展,用于在不修改原有代码的情况下增加如日志、权限检查等功能。文章详细讲解了如何通过代理模式解决不修改原代码的问题,探讨了Spring AOP的两种动态代理实现:基于JDK接口和CgLib的继承方式,并提供了具体的代码示例。
摘要由CSDN通过智能技术生成

AOP基础及底层原理

Aspect Oriented Programming
切面编程

1. 理解

AOP被称为横向切面编程,是OOP编程思想的延续,换句话讲就是:
OOP是纵向编程,编程思路是按照逻辑顺序向下进行,
而 AOP则是在原有的编程基础上进行横向扩展,例如为原有的程序增加日志或者权限检查的功能,并且不能改变原有的代码
并且对于一些重复出现在类或者方法中的代码就可以考虑使用AOP思想

2.面对的问题及解决方式

了解AOP的思想,那么在想要实现的功能时最主要的问题就是:

  • 怎么在不修改原来的代码时增加功能

解决方式就是使用代理模式:
代理的概念就是新建一个代理类,实现代理类的方法
反映在代码上:

//接口A
Interface A{
	m1();
	}
//实现类
public class A Implement A {
   //重写后的方法
	m1();
    }
}

//代理类
public class B Implement A {
private A a ;
	public B ( A  a){
	this.a = a;
	}
	//重写方法
	m1(){
		//需要增加的功能
		a.m1();
}
}

对应AOP思想则是使用相同接口的实现代理类:

在这里插入图片描述
或者基于继承该类实现代理

//代
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值