`
cuihz3115
  • 浏览: 7490 次
  • 来自: ...
最近访客 更多访客>>
社区版块
存档分类
最新评论

为什么用AOP

阅读更多

这个问题问的很有意思!我的理解就是他很好的解决了一些oop无法做到的事情举个例子说明一下!

假设我们有一个业务类,他有两个业务方法:

java 代码
  1. public class person   
  2. {   
  3.     public void eat()   
  4.    {   
  5.       //do something   
  6.     }   
  7.     public void smile()   
  8.    {   
  9.       //do something   
  10.    }   
  11. }  

由于客户需求的变更,我们需要对每一个业务方法执行前都要做用户的合法性检查,只有合法的用户才有这个权限去执行这个方法按照这个需求我们可以这么作(一)修改源代码就像这样

 

java 代码
  1. public void eat()   
  2. {   
  3.     validateUser();   
  4.     //do something   
  5. }  

 

第二种方法,加上代理,如果系统中这样的需求有很多的话,我们编程人员要作许多重复的工作。假设、用户的需求又变回去了的话,我们又要重新删除代码,给系统带来许多的不确定性的因素。有了这方面的困惑或者说是需求,就引出了aop

这个需求如果用aop的思想来做,代码是这样,在这里我们使用AspectJ,大名鼎鼎的aop领域的领跑者,spring aop中的许多东西就是借鉴他而来的。

java 代码
  1. public aspect test   
  2. {   
  3.    void before():call(void person.eat())   
  4.    {   
  5.         validateUser();   
  6.     }   
  7. }  

这样person类中的eat方法在执行之前就有了验证用户合法性功能

解释:切面  解决同样的问题,但是分散在不同的代码段中的程序片段就称为问题的切面

分享到:
评论

相关推荐

    spring aop spring aop

    它允许开发者定义“切面”,将那些与业务逻辑无关,却为多个对象共有的行为(如日志、事务管理等)封装起来,使得代码更易于维护和扩展。 在Spring AOP中,主要有以下几个核心概念: 1. **切面(Aspect)**:切面...

    Spring使用AOP的三个jar包

    要使用Spring的AOP功能,我们需要引入特定的库,这正是标题中提到的"Spring使用AOP的三个jar包"。 首先,我们来看`aspectjrt.jar`。这个库是AspectJ运行时环境的一部分,包含了运行时织入(runtime weaving)所需的...

    spring-aop.jar各个版本

    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-...

    使用Spring配置文件实现AOP

    在这个例子中,我们定义了一个名为`loggingAspect`的切面,包含一个前置通知和一个后置通知。通知由`LoggingAdvice`类提供,该类实现了具体的日志记录逻辑。切点`businessMethods`则定义了拦截的服务层的所有方法。 ...

    aop所依赖的所有包

    AspectJ Weaver通常与Spring AOP一起使用,Spring AOP则是Spring框架提供的轻量级AOP实现。 AOP Alliance是一个接口集,定义了AOP框架之间的通用API,使得不同的AOP实现能够互操作。它定义了一些基础的切面接口,如...

    aopalliance最新完整jar包

    总的来说,aopalliance是一个在Java AOP实现之间提供互操作性的库,它定义了一套通用的接口,使得开发者可以轻松地将不同AOP框架的拦截器和通知结合在一起使用。收集最新完整的aopalliance.jar包,对于保持项目的...

    AOP@Work AOP 工具比较

    虽然Spring AOP的功能相对较弱,不支持AspectJ的全部特性,但它与Spring框架的其他部分无缝集成,对于已经在使用Spring的项目来说,使用Spring AOP进行AOP编程非常便捷。 在选择AOP工具时,开发者需要考虑以下因素...

    西门子操作面板AOP30使用说明.zip

    西门子操作面板AOP30是一款用于工业自动化领域的用户界面设备,它为控制系统提供了直观的人机交互方式。本说明将详细介绍AOP30的主要功能、配置方法、编程及日常使用注意事项。 一、AOP30简介 西门子AOP30操作面板...

    spring-boot aop

    2. **创建切面类**:创建一个Java类,并使用`@Aspect`注解标记为切面。这个类可以包含一个或多个通知方法,这些方法通过其他注解(如`@Before`, `@After`, `@Around`, `@AfterReturning`, `@AfterThrowing`)来定义...

    aop开发环境jar包

    压缩包"aop-environment"很可能包含了上述部分或全部组件,为开发者提供了一个即用型的AOP开发环境。使用这样的环境,开发者可以直接专注于编写切面,而不必关心底层的依赖配置和版本兼容性问题。 总结来说,AOP...

    aopalliance

    这个组件扮演着至关重要的角色,它为不同面向切面编程(AOP)实现提供了一个统一的接口,从而使得各种AOP框架能够无缝地协同工作。本文将深入探讨AOPAlliance的核心概念、其在Spring 2.0中的应用以及如何通过aop...

    AOP使用CGLIB实现AOP功能

    Spring AOP实现方法之一:CGLIB 实现AOP功能

    aopalliance-1.0.jar及aopalliance源码

    AOP Alliance是一个开源项目,它的全称是Aspect Oriented Programming(面向切面编程)Alliance,是Java平台上的一个接口集合,为面向切面编程的实现提供了一个统一的API。这个库的主要目的是为了在不同的AOP框架...

    反射实现 AOP 动态代理模式(Spring AOP 的实现原理)

    Spring框架中的AOP模块使用了动态代理来实现AOP概念。Spring AOP允许开发者定义切面,并在这些切面中指定拦截的方法。Spring AOP支持不同的代理策略,包括JDK动态代理和CGLIB代理。如果被代理的类没有实现接口,...

    开发工具 aopalliance-1.0

    开发工具 aopalliance-1.0开发工具 aopalliance-1.0开发工具 aopalliance-1.0开发工具 aopalliance-1.0开发工具 aopalliance-1.0开发工具 aopalliance-1.0开发工具 aopalliance-1.0开发工具 aopalliance-1.0开发工具...

    spring aop jar 包

    在项目中,我们通常会将这个jar包引入到类路径下,以便使用Spring AOP的功能。 总的来说,Spring AOP通过提供面向切面的编程能力,极大地提高了代码的可复用性和可维护性,降低了系统复杂度,特别是在处理共性问题...

    Spring AOP面向方面编程原理:AOP概念

    2. **轻量级**:与一些需要预编译器的AOP框架不同,Spring AOP无需特殊的工具或编译步骤即可使用。这种轻量级的特性使得Spring AOP更易于学习和集成。 3. **灵活的通知模型**:Spring AOP提供了多种类型的通知,...

    aop介绍

    为什么需要 AOP? 使用 AOP 可以让我们从一个更高的抽象概念来理解软件系统,AOP 也许提供一种有价值的工具。可以这么说:因为使用 AOP 结构,现在 JBoss 4.0 的源码变得更加简洁、易维护、易扩展。 AOP 的优点 AOP...

    使用Spring的注解方式实现AOP的细节

    在Spring框架中,面向切面编程(AOP)是一种强大的工具,它允许程序员定义横切关注点,如日志、事务管理、权限...不过,需要注意的是,过度使用AOP可能会导致代码可读性和可维护性下降,因此在实际应用中应适度使用。

Global site tag (gtag.js) - Google Analytics