Spring AOP(1)


假如我们的service层有许多的方法save()、update()、delete()它们都有一个引用日志控制功能,那我们可以把这个日志控制功能抽取出来,但是这样的话就紧耦合了。

AOP就是把它们每个功能的引用日志控制功能去掉,把save()、update()、delete()和日志控制写成单独的模块,这样就解耦了。但是它们怎么结合呢?

在项目运行时,假如我们运行save()方法,我们在运行save()方法之前在运行日志控制,这样它们就结合起来了,并且日志控制和save()还是单独的东西。那它们是怎么结合的呢?是通过配置文件结合的。save()、update()、delete()分别与日志控制结合,AOP就是动态的结合的这种技术。目标和我们的增强结合起来就是切面。




动态代理简单来说就是在程序执行过程中,创建代理对象,通过代理对象执行方法,给目标类的方法增加额外的功能,也叫做功能增强。
JDK动态代理就是要有一个目标对象,目标对象要有一个接口,接口中有抽象方法,因为目标对象要实现目标接口,代理对象也有同样的方法,所以目标对象和代理对象像是兄弟关系,代理对象是通过运行阶段通过代理对象动态生成的。

如果没有目标接口那我们就用cglib动态代理技术,我们要增强目标对象,但是目标对象没有接口那么怎么增强呢,这个cglib动态代理就是对目标对象动态地生成一个子对象代理对象,子对象和父对象方法一致,但是子对象比我们父对象的功能要强大,但是这不是继承,本质上是代理对象调用目标对象,只不过是在调用目标对象之前对其他功能的一些介入,来增强目标对象。

posted @ 2022-04-14 19:40  长情c  阅读(23)  评论(0)    收藏  举报