个人认为简单一点就是加补丁,,以前是为一个类一个类加,现在是一堆一堆加,,,比如说一个制衣工厂里要给所有生产出来的男裤加个衣袋,以前是要工作一件一件找出来男裤,然后再加,现在呢,有一台机器,,直接可以从衣服中找出男裤并加上衣袋。。其实有点像css,,整体定义,不用一个页面一个页面去管字体呀等,,,那aop就是不用一个类一个类加一些业务等。。

解决方案 »

  1.   

    学习spring的aop,需要了解advice,pointcut,advisor,interceptor,proxy。首先你的某个类中的方法需要添加拦截行为,以前就是try,catch或者if来进行拦截,但代码的耦合度很高。用spring的话,就可以先找个代理来代理你这个类。于是proxy出现了。在spring中就有了许多代理工厂来产生代理了。
    有了代理,就可以添加拦截了。interceptor Names 就是告诉代理类,我添加了哪些拦截器和通知器了。于是interceptor,advisor出现了。有了advisor,于是advice和pointcut就产生了。pointcut一般只需在配置文件中配置即可,但你需要拦截的内容,行为都需要在advice定义。其实advice也可以理解成为一个interceptor。写advice并不轻松。但spring有许多写好的给你调用。
      

  2.   

    我也在看Spring的AOP,里面说了很多AspectJ的比较……没用过AspectJ的说。不过楼上的楼上说的很有道理。
      

  3.   

    今天还为spring和tiles的集成而烦恼有没有人知道具体怎么做?
      

  4.   

    tcmis(难道你忘了吗?)呵呵,表现不错?
    什么意思?
      

  5.   

    严重同意“学习spring的aop,需要了解advice,pointcut,advisor,interceptor,proxy”
      

  6.   

    AOP就是把分散在各个类中的相似的业务逻辑分离出来,单独写成一个类,然后在通过IOC依次添加回去!大概说就是上面的那个意思!Spring in action中的前面的讲解只是让你知道Spring中是如何作到AOP的,如果你能快速理解AOP的意思,也可以不用太看“advice,pointcut,advisor,interceptor,proxy”这些东东的!当然,出于深入理解,还是建议学习一下的哦!我觉得你学习一下Struts2.0,看看其中的Interceptor的知识就会非常明白AOP的原理和优点了,Struts2.0的核心就是拦截器,也就是在进入Action之前和之后插入一组拦截器完成各种功能,例如类型转换,防止表单重复提交等,这些在JSP或者Struts1.x中,我们是需要在各个Action中手写代码的,但是因为功能是公共的,Struts2.0就利用AOP完成了这些功能,只需要在配置文件中写一下,Action中什么都没有,非常简单的哦!
      

  7.   

    最近也在看,同意andrew830314的观点感觉就像把某个单独的功能(或者应该说是逻辑代码)提出来
    再用proxy包个皮spring提供了一些proxy
    我用到了配合hibernate的TransactionProxyFactoryBean
    感觉被proxy用JTA包了个皮,不用再beginTransaction和commit了不知道理解的对不对有个老师给我们讲过一个代理,很爽的,建议好好学习
      

  8.   

    struts2.0是从webwork过来的,在webwork中,Interceptor就是AOP思想的应用。
      

  9.   

    问一下,aspectJ 和 spring 的AOP哪个好些?
    aspectJ是不是性能不太好?
    谢谢
      

  10.   

    和楼主一样啊,总是这里那里的发现AOP,但是不知道那一个用的更好一些。
      

  11.   

    我最近也在学spring
    感觉很难理解的部分就是aop那块了
    我的理解:
    切面就是你要实现的交叉的功能,好像日志记录;
    你在系统的很多地方都要用到日志记录
    但是往往这些代码都是很零散的嵌入在你的业务代码里面,
    那么我们就可以形成这样一个日志记录这样一个单独的模块,改变零散的状态
    那连接点就是在程序执行过程中插入切面的地方,可以是方法调用,异常抛出,或者是修改字段
      

  12.   

    我前几天一个项目用到了aop,看了几天,反正最后把功能是实现了,用的是aop的方法拦截,但是具体要是让我解释这些名词我还真不会,大家可以互相学习
      

  13.   

    我觉得Spring in Action里举的例子就很好理解,关于诗人和骑士的例子。
      

  14.   

    诗人和骑士还不好理解吗?骑士不须关心诗人有无为他歌颂记录甚至不须关心诗人的存在.而诗人在骑士每做一件事之前或之后就已经为骑士记录好了.对应日常应用.就是说:我们无须为每个类添加一个方法去调用日志记录模块的内容..甚至无须关心有无这个日志模块,只是一心一意做自己的工作就好..日志模块会为每个类做的工作之前或之后或任何需要的时间里为其记录....这是我所理解的AOP..当然只是对AOP某个方面应用的理解..
      

  15.   

    Spring2.0中的AOP核心用的就是AspectJ,
    只是给我们提供好了Spring接口,
    而不需要再使用AspectJ的接口,
    这其实是对AspectJ的封装,
    所以,
    想要学习AOP,
    最好从AspectJ入手,
    学起来会简单些~
      

  16.   

    其实就是Spring根据你的类生成代理类,代理类中调用你的类中的方法,它在调用前后可以干一些其他操作
      

  17.   

    spring就像一个钉子,插在需要插入的地方,插入的东西是可以执行的其他监视用途代码,插入的位置可以变化。自己的想当然理解,采自学的spring。