从表面上来看,AOP是个好东西,但是仔细看,发现不是那么美。
AOP的不当使用,使代码失去主线索,成为“方面”的分割。而主线索代表了一个产品代码中所围绕的主要概念。
“方面”应该是为“线索”和“流程”服务的,在AOP之前的编程范式中,流程会调用好多基础包完成自己的流程,而AOP之后,无须再调用,自动织入。
其实想想,AOP的织入和普通用的模板模式何其相似,模板模式用的好,效果也非常接近AOP了。你说“业务过程无须再考虑日志的记录,所以日志做成单独的方面比较好”,但是为什么日志不是业务过程要考虑的?什么时候记日志,记什么内容,当然且理所当然是业务要考虑要设计的,这是我的理解,和现代AOP架构部一致的地方。
作为一个设计者,你的每个业务流程,考虑参数检查否?考虑权限判断否?考虑数据库交互否?考虑记日志否?当然都应该考虑,这是完整的过程。可以由上层设计师做成模板模式,由代码实现者只做数据库交互就可以,但是设计上是有全流程的设计的。
那么,如果只对无关紧要的部分使用AOP是否可以?当然是可以的,但是既然已经无关紧要,那么用不用什么心的架构,意义和价值都不大了。
另外,之前的设计过程,某一个业务流程出现错误,只需找特定的一个或几个人负责,现在一个业务涉及到整合的若干个方面,出错了再也要找更多的人来处理,这是小事,但是很烦。
从另外一个角度说,你是设计师,你不能总是嫌业务复杂和繁琐,因为这是必然要面对的,逃避不是办法。
相关推荐
【Spring AOP设计模式】是Spring框架中面向切面编程的重要组成部分,它允许开发者通过分离关注点来解耦代码,实现灵活的模块化设计。在本章中,我们将探讨17种设计模式在Spring AOP中的应用和实现,以及它们如何帮助...
- **避免过度使用AOP:**过度使用AOP可能会导致系统复杂度增加,应谨慎考虑是否真正需要引入AOP。 - **注意性能影响:**虽然AOP可以提高代码的可维护性和可扩展性,但过度使用可能会对性能产生负面影响。 #### 代码...
Spring AOP是Spring框架的一个重要组成部分,它为Java企业级应用提供了切面编程的实现。Spring AOP允许开发者专注于核心业务逻辑,而把非业务相关的关注点,如日志、事务管理等,分离出来,从而提高开发效率和代码可...
《开发者突击:精通AOP整合应用开发(AspectWerkz+Aspectl+...《开发者突击:精通AOP整合应用开发(AspectWerkz+Aspectl+Spring)》的读者对象:Java和Java EE的软件架构师与设计师,软件开发工程师、项目及技术经理参考。
使用 Spring AOP 进行方法耗时监测的好处有以下几点: 1. 代码实现简单,易于维护:使用 Spring AOP 可以将耗时监测的逻辑与业务逻辑进行解耦,避免业务逻辑代码的冗余和代码维护难度的提高。 2. 安全性高:使用 ...
22. **Schema-based配置**:包括 `<aop:config/>`, `<aop:aspect/>`, `<aop:pointcut/>`, `<aop:around/>`, `<aop:before/>`, `<aop:after/>`, `<aop:declare-parents/>`, 和 `<aop:scoped-proxy/>`,这些XML元素...
功能:实现AOP中异常日志管理的类
Java AOP(面向切面编程)是一种编程范式,它允许程序员定义“切面”,这些切面封装了特定关注点的代码,如日志、事务管理、权限检查等。这样可以将这些关注点与核心业务逻辑分离,提高代码的可读性和可维护性。在...
AOP联盟:aopalliance.jar API包a set of AOP Java interface .
以下是一个简单的示例,展示了如何使用Java反射API实现AOP: ```java import java.lang.reflect.InvocationHandler; import java.lang.reflect.Method; import java.lang.reflect.Proxy; public class ...
**AspectJ**是面向切面编程(Aspect-Oriented Programming, AOP)的一种成熟实现方式,专为Java设计。AOP是一种编程范式,旨在通过将程序中的关注点分离来提高模块化程度。传统的面向对象编程(OOP)在处理横切关注...
- **XML配置**:在Spring的配置文件中,可以使用<aop:config>标签来定义切面,<aop:pointcut>定义切点,<aop:advisor>定义通知,<aop:aspect>将切点和通知关联起来。 - **注解配置**:Spring 2.5引入了基于注解的...
在使用spring的aop功能时,这两个jar是必须的,否则会报错,如下: Caused by: java.lang.ClassNotFoundException: org.aspectj.weaver.reflect.ReflectionWorld$ReflectionWorldException at java.net....
在Spring框架中,从2.0版本开始支持两种方式来使用AOP:基于AspectJ注解的AOP以及基于XML配置的AOP。 4. 在Spring中启用AspectJ注解支持 要在Spring应用中使用AspectJ注解,需要在classpath下包含三个JAR文件:aop...
Spring框架作为Java开发领域的领头羊之一,提供了强大的AOP支持。本文旨在深入探讨Spring AOP的核心概念及其原理。 #### 二、AOP基本概念 AOP是一种编程范式,其目的是提高模块化程度,特别是将那些对很多类都具有...
Java Spring AOP(面向切面编程)是一种强大的设计模式,它允许程序员在不修改源代码的情况下,通过插入切面来增强或修改已有代码的行为。在Spring框架中,AOP主要用于日志记录、性能监控、事务管理等场景。下面将...
Maven坐标:org.springframework:spring-aop:5.0.10.RELEASE; 标签:spring、aop、springframework、jar包、java、API文档、中文版; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览...
在Android开发领域,成为一个架构师不仅意味着掌握基本的编程技巧,还需要深入理解系统架构、设计模式、性能优化以及特殊技术,如AOP(面向切面编程)。本资料"android架构师之路_aop"旨在帮助初学者搭建AOP基础,...
在Java开发领域,AOP(Aspect Oriented Programming,面向切面编程)作为一种重要的编程范式,为解决模块化编程中的横切关注点问题提供了新的思路。AOPalliance是AOP框架之间的一个接口标准,它定义了一些基本的切面...
Java动态代理是一种实现AOP的技术手段之一。它可以动态地生成代理类来拦截方法调用。Java动态代理的核心类主要有两个: - `java.lang.reflect.InvocationHandler`: 定义了一个接口,用于处理代理对象的方法调用。 -...