这篇文章主要介绍了Spring框架中AOP技术是什么,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。
AOP并不是spring中所独创的技术,因为AOP可以理解为是一种编程思想,例如OOP(面向对象编程)一样。只是最近它才被作为一项技术真正的用于软件开发中的。那么到底什么是AOP呢?AOP的全称为Aspect Oriented Programing。看翻译我们基本就可以猜出AOP的名字了,也就就是我们常常听说的面象切面编程。我们通过下面的例子来展示AOP到底能够解决我的方法中的什么问题?
我们在日常开发时知道,如果多个类中有相同的代码,那么我们就要考虑抽取一个公共的抽象类或接口,将多个类中的相同的代码提取到抽象类中去实现,不同的逻辑放到相应的子类中去处理,这样不但方便我们开发与维护,还遵循了软件重构的思想。那么这样真的能消除掉决子类中的重复代码吗?我们看下面的例子:
我们看上述的代码UserService类中只有简单的代码,我们用一条输出语句代替具体的业务逻辑,但是在我们日常开发,常常需要向上述的代码一样,为相应的逻辑添加事物以解决一致性的问题。这时上述的代码的弊端也就展现出来的,也就是业务代码中会有大量的事物管理的代码,并且这些代码,我们并没办法法通过提取抽象类的方法解决。这时如果我们想要消除到业务逻辑里的事物代码就要考虑使用AOP解决了。那么spring中怎么用AOP解决上述问题呢?先不要着急,我们先抛砖引玉在后面的文章中我们在看具体的解决办法法,我们接下来了解一下spring中AOP其它方法的知识。
在spring的AOP中定义了一些基本的术语,我们下面将介绍这些术语的具体名字与作用。
连接点
程序执行的某个特定位置,也就是类的方法调用前、调用后、方法抛出异常后等。在spring中连接点只支持方法的连接点,也就是只能在类的方法调用前、调用后、方法抛出异常后等。
切点
切点就也是定位特定的连接的。简单一点的比喻就是连接点相当于数据库的记录,而切点就相当于查询条件。所以,在spring中切点与连接点不是一一对应的关系,一个切点可以匹配多个连接点。
增强
增强就是添加到目标类连接点上的代码,也就是上述我们例子中的添加事物的代码。正是因为如此,所有spring为我们提供的增强接口都是带方位名的,例如BeforeAdvice、AfterReturningAdvice等。
目标对象
也就是添加增强逻辑的目标类。
引介
一种特殊的增强,它可以为类添加一些属性和方法。即使这个类没有实现某个接口,通过引介也可以动态为该类添加接口的实现逻辑。
织入
织入就是将增强添加到目标类具体连接点的过程。AOP有三种类型的织入它们分别是:
编译期织入
类装载期织入
动态代理织入,在运行期为目标类添加增强生成子类的方法。
spring采用动态织入,而AspectJ采用编译织入和类装载期织入。
代理
目标类被增强后就会生成一个新的包括增强逻辑的代理类。我们就是使用这个代理类,来完成我们横切的逻辑。
切面
切面由切点和增强组成,它即包括横切的逻辑,也包括连接点的定义。
感谢你能够认真阅读完这篇文章,希望小编分享的“Spring框架中AOP技术是什么”这篇文章对大家有帮助,同时也希望大家多多支持亿速云,关注亿速云行业资讯频道,更多相关知识等着你来学习!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。