AOP是什么?
Aspect-oriented programming (AOP) ,从名字上说类似oop Object Oriented Programming。AOP是OOP的延续,是Aspect Oriented Programming的缩写,意思是面向方面编程。而什么是方面哪?
方面也可以认为是关注点,在一个系统中存在很多关注点,比如记录日志,授权等。面向对象的趋势是使系统耦合越来越小,设计模式也是如此。然而,这些关注点是最普通的功能,也许会贯穿系统始终,使系统的开发,尤其是维护带来很多的问题,到处重复着相同的代码。
比如,记录日志:
public interface MyBizInterface {
public void myBizMethod();
}
public class MyBizObject implements MyBizInterface {
private Logger logger = Logger.getLogger(getClass().getName());
public void myBizMethod(){
try {
logger.info("start to execute...");
//do something here
logger.info("end processing...");
} catch (Exception e){
logger.info("exception happends..."+e.getMessage());
}
}
}
上面的代码很简单,一个简单的业务逻辑myBizMethod(),当然我们需要记录日志,但是这样商业逻辑的代码和日志记录代码混合在一起,这给日后的维护带来一定的困难,同时存在大量的代码重复。
同样是方面(关注点),应该有主次轻重之分,比如,上面的例子,显然业务逻辑比较重要,不过你非说日志记录重要也行。所以,我们应该把日志记录代码(次要)从重要的业务逻辑分离出来。要将这些代码分离就涉及到一个问题,我们必须知道商业逻辑代码何时被调用,这样我们好插入日志记录代码。一般来说要截获一个方法,我们可以采用回调方法或者动态代理。动态代理一般要更加灵活一些,目前多数的AOP Framework也大都采用了动态代理来实现。
有了AOP,我们就可以拦截主要的业务逻辑,把我们不是特别重要的代码【注入】到里面去,AOP防止了代码变得混乱。
分享到:
相关推荐
什么是代理模式?怎么设计日志拦截器?” 在编程领域,AOP(Aspect Oriented Programming,面向切面编程)是一种编程范式,它旨在提高代码的可重用性和模块化。AOP的核心思想是将关注点分离,即业务逻辑与系统级...
为什么需要Spring AOP呢? 1. **代码解耦**:通过将横切关注点从核心业务逻辑中分离出来,可以减少代码之间的耦合度,使得代码更易于理解和维护。 2. **重用性**:切面可以被多个对象共享,提高了代码的重用性,...
面向切面编程(AOP,Aspect Oriented Programming)是Spring框架的重要组成部分,它提供了一种在不修改原有业务代码的基础上,插入额外功能的编程模型。Spring AOP使得开发者能够更方便地实现如日志记录、事务管理、...
**AOP Alliance简介** AOP Alliance是一个开源项目,它的全称是Aspect Oriented Programming(面向切面编程)Alliance,是Java平台上的一个接口集合,为面向切面编程的实现提供了一个统一的API。这个库的主要目的是...
Spring AOP 基础关于 AOP 是什么的理解 AOP(Aspect Oriented Programming 面向方面的编程)是一种实现横切面的工具,它是 OOP 的补充,而不是 OOP 的竞争对手。AOP 的出现是为了解决 OOP 中的缺陷,即 OOP 中的类...
**Spring AOP 简介** 面向切面编程(AOP),全称为 Aspect-Oriented Programming,是一种编程范式,旨在解决传统面向对象编程(OOP)中的代码重复和分散问题。在OOP中,诸如事务管理、日志记录等功能往往会分散在多...
在Java应用中,aopalliance.jar包扮演着至关重要的角色,它包含了一些核心接口,如`org.aopalliance.intercept.MethodInterceptor`和`org.aopalliance.aop.Advice`,这些接口定义了拦截器和通知的概念,它们是AOP的...
**Spring AOP切面编程简介** 在Java世界中,面向切面编程(Aspect-Oriented Programming,简称AOP)是一种编程范式,它允许我们分离关注点,将横切关注点(如日志、事务管理、性能监控等)与业务逻辑代码解耦。...
AOP(Aspect-Oriented Programming,面向切面编程)是一种编程范式,旨在减少代码的重复性和增强可维护性,特别是在处理系统中的横切关注点时。这些关注点,如日志、事务管理、安全检查等,往往分散在系统的各个部分...
spring-aop-1.1.1.jar spring-aop-1.2.6.jar spring-aop-1.2.9.jar spring-aop-2.0.2.jar spring-aop-2.0.6.jar spring-aop-2.0.7.jar spring-aop-2.0.8.jar spring-aop-2.0.jar spring-aop-2.5.1.jar spring-aop-...
在给出的XML配置中,`<aop:config>`元素开启AOP支持,而`<aop:aspect>`元素用于定义切面,其内部通过`<aop:pointcut>`定义切点,并通过`<aop:before>`和`<aop:after>`指定通知。 为了使用这些配置,我们需要在代码...
在Spring框架中,AOP(面向切面编程)是一种强大的工具,允许开发者在不修改源代码的情况下添加额外的功能或监控代码,如日志、事务管理、权限检查等。然而,在实际项目开发中,有时可能会遇到Controller无法被AOP...
Spring AOP 是什么?你都拿它做什么?
AOP编程模型 AOP(Aspect-Oriented Programming),即面向切面编程,是一种编程范式,它将关注点(Cross-Cutting Concerns)从业务逻辑中分离出来,实现模块化和松耦合的系统设计。AOP通过引入Aspect、Join Point、...
面向切面编程(AOP)是一种编程范式,旨在将横切关注点(如日志、安全等)与业务逻辑分离,从而提高模块化。AOP通过预定义的“切面”对横切关注点进行模块化,从而可以在不修改业务逻辑代码的情况下增加新功能。动态...
为什么需要 AOP? 使用 AOP 可以让我们从一个更高的抽象概念来理解软件系统,AOP 也许提供一种有价值的工具。可以这么说:因为使用 AOP 结构,现在 JBoss 4.0 的源码变得更加简洁、易维护、易扩展。 AOP 的优点 AOP...
### Spring AOP面向方面编程原理:AOP概念详解 #### 一、引言 随着软件系统的日益复杂,传统的面向对象编程(OOP)逐渐暴露出难以应对某些横切关注点(cross-cutting concerns)的问题。为了解决这一挑战,面向方面编程...
面向切面编程(AOP,Aspect Oriented Programming)是一种编程范式,旨在通过将关注点分离,提高软件的模块化程度。AOP的核心是切面,它封装了横切关注点,如日志、事务管理、性能监控等,使得这些功能可以独立于主...
Spring Boot AOP(面向切面编程)是一种强大的设计模式,它允许我们在不修改现有代码的情况下,插入额外的功能或监控代码。在Spring框架中,AOP主要用于日志记录、事务管理、性能统计等场景。本示例是关于如何在...
一、AOPAlliance简介 AOPAlliance是一个开源项目,旨在为不同的AOP实现提供一个共同的接口,以便于在不同的AOP框架之间共享代码和实现互操作性。它定义了一些基础的AOP接口,如`org.aopalliance.intercept....