1.作用:在程序运行期间,不修改源代码的情况下对方法进行增强
优势:减少重复代码,提高开发效率,便于维护
aop:面向切面编程,完成解耦合功能


例子演示

比如我一个程序中包含这三个功能,然后我想让每个功能我打印日志,此时需要将日志和每个功能结合起来;如果有一天我要修改日志的代码,那么这三个功能都要修改代码,因为它这日志是和每个功能的代码耦合死的。如果像这样的功能不止三个,那就会很麻烦,耦合度太高,所以就引入aop的概念

Spring-AOP_配置文件


我们把日志功能提取出来,让这个程序称为四个功能,提高代码的可重用性,

Spring-AOP_aop_02


但是我们想-》把日志的功能提取出来,怎么把日志功能和每个功能结合起来,当修改日志代码就不会影响每个功能呢?

看下面的图片,我们让日志功能在save方法运行之前运行,这样不就能结合起来了吗?但是我们怎么告诉程序让他们在运行期间结合呢?

Spring-AOP_设计模式_03


所以就要使用配置文件的方式,在配置文件内部,告诉它和每个功能相结合。当修改日志代码时,我们就可有只修改配置文件而不用去修改每个功能,这样就完成了解耦合


aop:完成以上功能和日志功能动态结合的技术叫做aop(面向切面编程)
save,update,delete叫做目标方法,日志叫做功能增强方法,把他们结合到一起叫做切面