从表面上来看,AOP是个好东西,但是仔细看,发现不是那么美。
AOP的不当使用,使代码失去主线索,成为“方面”的分割。而主线索代表了一个产品代码中所围绕的主要概念。
“方面”应该是为“线索”和“流程”服务的,在AOP之前的编程范式中,流程会调用好多基础包完成自己的流程,而AOP之后,无须再调用,自动织入。
其实想想,AOP的织入和普通用的模板模式何其相似,模板模式用的好,效果也非常接近AOP了。你说“业务过程无须再考虑日志的记录,所以日志做成单独的方面比较好”,但是为什么日志不是业务过程要考虑的?什么时候记日志,记什么内容,当然且理所当然是业务要考虑要设计的,这是我的理解,和现代AOP架构部一致的地方。
作为一个设计者,你的每个业务流程,考虑参数检查否?考虑权限判断否?考虑数据库交互否?考虑记日志否?当然都应该考虑,这是完整的过程。可以由上层设计师做成模板模式,由代码实现者只做数据库交互就可以,但是设计上是有全流程的设计的。
那么,如果只对无关紧要的部分使用AOP是否可以?当然是可以的,但是既然已经无关紧要,那么用不用什么心的架构,意义和价值都不大了。
另外,之前的设计过程,某一个业务流程出现错误,只需找特定的一个或几个人负责,现在一个业务涉及到整合的若干个方面,出错了再也要找更多的人来处理,这是小事,但是很烦。
从另外一个角度说,你是设计师,你不能总是嫌业务复杂和繁琐,因为这是必然要面对的,逃避不是办法。
相关推荐
第四章:Spring AOP 设计模式小马哥(mercyblitz)Spring AOP 设计模式抽象工厂模式(Abstract factory)实现构建器模式
When to use Spring AOP and AspectJ AOP? Expert author Ramnivas Laddad shows how to combine technologies such as Spring, Hibernate, Swing, and JDBC with AspectJ. The book fully covers the latest ...
《开发者突击:精通AOP整合应用开发(AspectWerkz+Aspectl+...《开发者突击:精通AOP整合应用开发(AspectWerkz+Aspectl+Spring)》的读者对象:Java和Java EE的软件架构师与设计师,软件开发工程师、项目及技术经理参考。
Spring基础:Spring AOP简单使用
第三章:Spring AOP API 设计与实现小马哥(mercyblitz)Spring AOP API 设计与实现Spring AOP API 整体设计接入
上下文模块:建立在Core和Beans模块的基础之上,它是访问定义和配置的任何对象的媒介。其中ApplicationContext接口是上下文模块的焦点。 Context-support模块:提供了对第三方库嵌入Spring应用的集成支持,比如缓存...
使用 Spring AOP 进行方法耗时监测的好处有以下几点: 1. 代码实现简单,易于维护:使用 Spring AOP 可以将耗时监测的逻辑与业务逻辑进行解耦,避免业务逻辑代码的冗余和代码维护难度的提高。 2. 安全性高:使用 ...
功能:实现AOP中异常日志管理的类
hualinux spring XML开发系列之 hualinux spring 3.15:Spring AOP 文字版本
AOP联盟:aopalliance.jar API包a set of AOP Java interface .
在使用spring的aop功能时,这两个jar是必须的,否则会报错,如下: Caused by: java.lang.ClassNotFoundException: org.aspectj.weaver.reflect.ReflectionWorld$ReflectionWorldException at java.net....
第五章:Spring AOP 在 Spring Framework内部应用小马哥(mercyblitz)Spring AOP 在 Spring Framewor
aop java
Maven坐标:org.springframework:spring-aop:5.0.10.RELEASE; 标签:spring、aop、springframework、jar包、java、API文档、中文版; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览...
用实例讲述了如何在标准的java6 sdk下实现AOP开发模式。
Java spring AOP源码
本书以AOP基础理论为主线,首先讲解AOP的产生与发展、为什么要应用AOP、AOP的核心概念,然后详细讲解AspectWerkz、AspectJ、...本书的读者对象:Java和Java EE的软件架构师与设计师、软件开发工程师、项目及技术经理。
java aop Aspectj 开发工具,eclipse 插件和相关开发jar包 插件
AspectJ is a mature AOP implementation for Java, now integrated with Spring. AspectJ in Action, Second Edition is a fully updated, major revision of Ramnivas Laddad's best-selling first edition. It'...
aopalliance源码