最近几个项目中一直在使用ssh框架,不过说实话.到现在还不明白其中的AOP为何意,网上查阅的资料看过一些感觉还不是不很清楚,其中aop是一种业务组件还是一种编程思想?
还有spring.xml中为何要配置aop一些相关信息?

解决方案 »

  1.   

    应该属于一种设计思想吧
    把应用中公用的部分剥离
    作为切面最有代表的应该是spring 的事务
    在开发过程中不用关心事务的处理,只实现逻辑
      

  2.   

    个人理解是一种思想.但spring依靠这种思想作出了通用的组件,比如事务处理,连接池,日志系统等.
    然后根据需求可以配置这些组件达到想要的效果.
      

  3.   

    AOP 的概念 Google 一下就知道了啊, AOP 是思想啊, 就如同面向对象的思想;而 Spring AOP 是 Spring 对 AOP 这个思想的一个实现, 最成熟的是 AspectJ 专门
    的面向切面的技术;  Spring AOP 的实现虽然没有 AspectJ 那么全面,但是是现在最
    常用的 AOP 的应用;而声明式事务是利用了 Spring AOP 来实现的; 
      

  4.   

    aop说白了就是java的动态代理封装
      

  5.   

    AOP(面向切面编程)是一种编程技术,用来在系统中提升业务的分离。说白了就是:把各个模块或者说是组件都需要使用的公共功能提取出来做成单独的组件,以供其他的组件使用,免得重复编写代码,且便于维护。典型的面向切面编程如:事物管理,日志,安全管理等。
      

  6.   

    面向切面编程,说白了就是java的动态代理封装
      

  7.   

    不能光听什么面向切面编程之类的名词,要真正去理解AOP的运行机制以及在应用中一般使用的步骤等
      

  8.   

    AOP(Aspect Oriented Programming)的概念
    首先,需要明确的一点就是,AOP 不是用来替换OOP 的,而是OOP 的一
    个补充,通过提供另外一种思考程序结构的途经来弥补OOP 的不足。在OOP
    中模块化的关键单元是类(classes),而在AOP 中模块化的单元则是切面。切面
    能对关注点进行模块化。回想在以往的代码段中,程序一般都是至上而下的代码
    结构,有些代码并非业务代码,它们仅仅是一个较为常用的逻辑处理块,但是在
    代码中只要需要用到,就得处处编写或这实时调用,如日志、异常、事务处理等。
    而AOP 的出现,使得这些代码不再凌乱,并且还可以使其模块化,变得更易于
    维护和管理。说得简单一点,AOP 就是可以在程序运行的过程当中,动态的在
    程序的指定位置插入一些特殊的代码来完成一些特定的功能。
    更进一步,OOP 中的设计模式,让我们的类处在一个封闭的、静态的环境下,
    虽然提供有接口和抽象类,并伴随有重载和重写的机制在其中,但这种灵活是有
    限的,它不能动态的对程序进行扩展或修改程序内部的行为。而面向切面能够剖
    开对象的内部,动态修改模型的行为,从而可以不断的增长系统以满足新的需求。
    AOP 可以将一种常用的或者特定的行为封装成可重用模块,将其命名为Aspect
    (切面),这些切面与业务逻辑应该是无关的。AOP 提高了代码的可重用性,并且
    还提供了动态修改内部代码的能力。AOP 框架是Spring 的一个重要组成部分。
    但是Spring IoC 容器并不依赖于AOP,这意味着你有权利选择是否使用AOP,
    AOP 做为Spring IoC 容器的一个补充,使它成为一个强大的中间件解决方案。
      

  9.   

    aop明白了,spring就入门了
    要多体会自然也就会了
      

  10.   

    aop还有很多地方值得学习的,继续努力;
      

  11.   

    方法至上而下执行,AOP关注的是横切性。它是对OO的一个超级补充应用:
       项目中一个方法执行,你可能要给他加点日志,对于某个方法你可能使用Logger.debug()打印一段信息,
    但是项目中N个类N个方法都要加日志,你是不是还去每个方法上加日志代码呢???
    肯定不会!累啊! 现在有AOP,ok,这些事你不要做了 在spring里配置一下aop就能帮你搞定了  在SSH架构中,AOP最重要的功能就是做声明式的事务管理了,以前做个一个项目,没用spring,是struts+hibernate的架构,结果要进行数据库的操作的时候(比如保存一个对象),每次都要先
    session.beginTransaction();,然后在commit一下提交事务,然后有异常了就回滚事务,都是些重复性的代码,现在有AOP就不一样了,你只要在spring中配置一下,告诉一下spring,你项目那些包下哪些类需要事务才能执行,然后在客户端调用这些类的方法的时候,spring会自动为这些类的方法在事务中运行,而你仅仅要做的就是写你的业务逻辑代码  spring中aop的实现使用的第三方的一个框架aspectJ,它在声明事务的时候,先为要事务运行的类产生一个代理对象,然后在代理对象中加入事务。。
      
     AOP的实现原理 :JDK的动态代理和CGLIB, 建议去了解动态代理设计模式,非常精辟的一个设计模式