概述
提起Spring,必然就会联想到AOP(面向切面编程)和IOC(控制反转)这两个词,众所周知,Spring框架对这两种思想进行了很好的实现。
在这篇文章,我将大致的介绍Spring对AOP这思想的实现流程。
对于AOP,关注的两个问题:
- 什么是是AOP/IOC?
- AOP/IOC解决了什么问题?
一、什么是AOP
Aspect oriented programming 面向切面编程,AOP 是 OOP(面向对象编程)的一种延续。
我们知道,根据面向对象编程的思想,对于一些具有相同属性和方法的类,我们可以抽象出他们共同部分作为一个父类,然后这些子类通过继承来获得他们共同的属性。比如Cat
类和Dog
都有eat()
方法,那么我们可以将eat()
方法抽象到他们的父类Animal
,让他们去继承父类。
我们管这个抽取成类的方法叫做纵向抽取。
而如果他们的父类的方法中有相同方法,那么就直接抽取成公共方法。,但是有一些一开始就耦合到业务逻辑里的重复代码,比如下面统计方法执行时间的方法: