声明:请勿直接抄袭,翻译不易,转载请注明 http://www.javashuo.com/article/p-okwkfoys-mv.html ,谢谢。html
你了解 Spring AOP 吗?你有在你目前的 Spring Boot 项目中使用它吗?若是没有,这篇文章就是为你准备的!java
最近,我看到不少项目都在使用 Spring Boot 和其余优秀框架开发的最新技术。一方面,这听起来是很棒的,可是另外一方面,我常常看到不少开发人员并无充分利用这些新技术的所有有点。web
我认为主要是由于多数的书和文档都过于学术化而且晦涩难懂。因此这就是为何我决定谈一谈我对面向切面编程(aspect-oriented programming)
的一点理解。
spring
在 OOP 中最小的单元是类(class)
,而在 AOP 中最小的单元是切面(aspect)
。编程
更通俗地讲就是,AOP 有助于咱们将不一样可是有必要的重复性代码重构为不一样的模块
。这么作的好处是,咱们能够将这些重复性代码集中管理起来复用,而不是每次都要重复写一遍。框架
这种方法的好处是,代码将会变得更易于维护,从而将业务逻辑从杂乱的代码中脱离出来,专一于业务逻辑代码的开发。咱们将这些不一样的功能划分到不一样的切面中。svg
一个切面是对杂乱地散落在各个类中的横切关注点的模块化。好比,集中日志记录
或事务管理
就是最好的例子。
模块化
在这里,你会意识到有些代码是于业务逻辑无关的。因此,咱们应该要将它们抽离出来,放到其余地方,将业务逻辑单独分出来处理。学习
这么作的结果就是会致使以下两个问题:网站
使用 AOP 可以帮助你解决这样的问题。因此,在这里 AOP 所作的就是将全部散落各处的事务代码集中到一个事务切面中。而后,将全部的追踪代码(tracing code)集中到一个切面中。最后,将异常处理集中到一个切面中。
至此,就能够是实现业务逻辑和其余切面之间的分离。
在经典的面向对象编程中,没法将它们集中到一个地方统一实现,所以没法避免代码纠缠和胡乱交叉。
而面向切面编程则容许你在一个集中的地方实现横切关注点。因此,若是使用 AOP,那么将会容许你先实现你的业务逻辑,而后再统一处理横切关注点的问题。
经过这种方式,你能够编写基础结构并决定是否要将事务或日志记录添加到代码中。所以,你能够建立本身的中间件。而后,使用 Spring AOP 将这些切面添加到程序中,以便程序处在在运行时
状态的时候,实际地去执行这些切面和主要的业务逻辑。
若是你看过个人文章《What is Spring framework in java?》,那么你必定知道 Spring AOP 是 Spring 的核心模块之一。
Spring AOP 经过消除代码纠缠和交叉问题,在咱们的项目中支持面向切面的模块化。将 Spring AOP 库添加到咱们的项目中,你将会开始体验到使用它的一些组件所带来的好处。
这些组件如 注解(annotation)
、建言(advice)
、链接点(join points)
、以及切点(point cuts)
。
一般,你会使用 AOP 来实现企业级的功能开发,从而使 Spring 框架更加实用。
AOP 容许你准确地将你所定义的切面集中到特定的地方。所以,你将得到可配置的中间件。若是你想要更加深刻地了解 Spring AOP,请继续关注接下来要发表的文章或这个网站。
原文连接 What Is Spring AOP?
欢迎扫码关注个人公众号「蜗牛永动机」,回复 1024 免费获取 5G 编程学习资源~