作者:Zoltan Raffai
译者:shirehappy
虽然AOP很少被提及,但是它在Spring中的应用很广泛。可能是时候来熟悉AOP以及如何让它为你工作。
关于Spring AOP你知道些什么?你当前的Spring Boot项目有用到它吗?如果没有,这篇就是给你的。
当前,我看到很多项目使用全部最新的Spring Boot和其他前沿框架技术。一方面,听起来很有前途,但是另一方面,我经常看见开发者并没有充分利用他们面前的技术。
我想这主要是因为主要的书籍和文档都太学术化了而且很难理解。这也是我为什么决定讨论关于面向切面的编程。
什么是面向切面的编程(AOP)?
面向切面的编程是通过横切点解决问题的编程范式。面向切面的编程(AOP)通过提供不同的方法来思考程序结构,补充了面向对象的编程(OOP)。
在OOP中模块的关键单元是类,而在AOP中,模块的单元是切面。
更简单点说,它帮助我们重构了不同模块中不同的重复代码。这让我们能在一个地方维护这些功能代码,而不是在每个地方都写下来。
这种方法将产生更可维护的代码,从更混乱的因素中清除业务逻辑。我们将这些功能从不同切面分开。
一个切面是一个横切多个类的关注点的模块化。统一日志或事务管理是一个很好的例子。
使用AOP简化代码
让我们看如下的给定代码示例
这里,你能够识别一些不同的关注点,与业务逻辑自身没有关系。我们应该分隔这些到其他地方。在这之后,只留下业务逻辑。
AOP如何大规模的工作
如果你有一个系统包含很多包和类并没有使用AOP,比如日志追踪,事务和异常处理,我们不得不在每一个类和每一个方法实现它们。
这将导致两个问题:
代码混乱--每个类和方法包含日志追踪,事务和异常处理甚至业务逻辑。在混乱代码中,经常很难看到一个方法中真正运行的是什么。
代码分散--切面比如事务是分散在代码中,没有在系统的一个特别部分实现。
使用AOP能让你解决这些问题。因此,AOP做的是获取所有事务代码然后将它们放到事务切面。然后,获取全部跟踪代码并将它放到一个切面。最后,异常处理放到一个切面。
之后,业务逻辑和全部额外切面将会有清晰的分隔。
横切关注点
在传统的面向切面的编程中,它们不能在一个地方实现,因此你不能避免代码分散和代码混乱。
面向切面的编程能让你在一个集中地方实现横切关注点。因此,如果你用AOP,它工作的方式是你首先实现你的业务逻辑,然后为你的横切关注点依靠切面。
那样,你可以组合你的基础架构,也能选择是否增加事务或日志到你的代码。因此,你能创造你自己的个性化中间件。然后,你能使用Spring AOP来增加切面到你的应用。在运行时,这个切面和你主要的线性业务逻辑一样,会被实际执行。
什么是Spring AOP?
如果你查看my article about the Spring framework,你能看到它是Spring的核心建筑模块。
它通过消除代码混乱和横切关注点,在我们的项目中支持面向切面的模块化。添加Spring AOP库到我们的项目中,你能开始充分利用它包含的很多不同工具的优点。
这些可能成为工具,比如注解,通知,连接点和切点。这些是这个库最必要的基础。
通常,你使用AOP来实现企业特征让Spring框架更有用。
AOP允许你在你想要集成的你定义的特别的切面的地方准确的定义。因此,你将得到一个配置中间件,如果你讲学耿学夺冠Spring AOP,继续收看接下来的文章或者访问这个网站。
概要
在这篇文章中,我试图阐明面向切面编程的概念并向你介绍它怎样关联到Spring 框架。在我接下来的文章中,我将深入Spring AOP库,这些都是它的基础,和你能怎样使用它。希望我能有所帮助!我在下面的评论中告诉我们你的想法,不要忘记分享!
关注公众号
领取专属 10元无门槛券
私享最新 技术干货