现在学到了Spring 的AOP,都说AOP是最难理解的思想课,,哪位高手,能根据自己的理解,说说AOP 。为什么要用??它的思想,等等。。

解决方案 »

  1.   

    网上资料特别多,你找找。主要是理解AOP的思想,思想比较重要!
      

  2.   

    开始我以为AfterReturning就是把剩余的事情交给Aspect去做,不占用返回的时间。
    不知道这一想法对不对头。我还以为,AOP更重要的是把某一类相似的操作交由Aspect去处理,使代码更优雅。
      

  3.   

    某一个方法有他自己的业务逻辑,这个时候,如果你想在该方法上加上例如权限控制,或者日志的业务,使用aop就可以不改变方法原有的业务逻辑,这是比较重要的.
      

  4.   

    aop的应用(用来在不修改源码的情况下增加新功能,建立SSH时,可以跳过)
    aop的相关名词()
    advice:表示一个增强的功能.
    pointCut:表示一次或多次方法调用.
    advisor=advice+pointcut
    interceptor=advice或advisor
     
    1、创建一个Advice对象,覆写方法完成增加的功能。
    package biz;
    import org.aopalliance.intercept.MethodInterceptor;
    import org.aopalliance.intercept.MethodInvocation;
    public class JiaJiFenAdvice implements MethodInterceptor {
    @Override//覆写方法完成增加的功能
    public Object invoke(MethodInvocation invocation) throws Throwable {
    Object res=null;
    try {
    //这里添加:在原有功能前加功能
    res=invocation.proceed();
    //这里添加:在原有功能后加功能
    } catch (Exception e) {
    }
    return res;
    }
    }
    2、在“applicationContext.xml”文件里配置:
    <!-- 客户 -->
    <bean name="/doLogin" class="web.EpetDispatchAction">
    <property name="diaryBiz" ref="petDiaryBiz"></property>
    <property name="loginBiz" ref="petLoginBiz"></property>
    </bean>
    <!-- 目标 -->
    <bean id="petDiaryBiz" class="biz.DiaryBiz"></bean>
    <bean id="petLoginBiz" class="biz.LoginBiz"></bean>
    <!-- 增强 -->
    <bean id="petJiaJiFenAdvice" class="biz.JiaJiFenAdvice"></bean>
    <!-- 代理 -->
    <bean class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">
    <property name="beanNames">
    <list>
    <value>petDiaryBiz</value>
    <value>petLoginBiz</value>
    </list>
    </property>
    <property name="interceptorNames">
    <list>
    <value>petJiaJiFenAdvice</value>
    </list>
    </property>
    </bean>如果看不明白,可以去我的资源里下载例子
      

  5.   


    不错!!希望还能把AOP 的思想,还有其他重要的作用讲的更详细些。
      

  6.   

    AOP是一个概念,通常我们写的业务代码可以认为是一个纵向的行为,那么AOP就可以理解为一个横切性的行为。
      

  7.   

    买本spring in action 2看一下,这本书还不错。
      

  8.   

    <bean name="trasactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
    <property name="sessionFactory" ref="sessionFactory"></property>
    </bean>

    <tx:advice id="myadvice" transaction-manager="trasactionManager">
    <tx:attributes>
        <tx:method name="add*" propagation="REQUIRED" 
          rollback-for="Exception" />
    <tx:method name="edit*" propagation="REQUIRED"
    rollback-for="Exception" />
    <tx:method name="del*" propagation="REQUIRED" 
    rollback-for="Exception" />
    <tx:method name="drop*" propagation="REQUIRED"
    rollback-for="Exception" />
    <tx:method name="register*" propagation="REQUIRED"
    rollback-for="Exception" />
    <tx:method name="*" read-only="true" />
    </tx:attributes>
    </tx:advice>

    <aop:config>
    <!--
      切点:  对哪些包下面的接口进行事务管理
      第一个星号代表方法返回值类型任意。
        第二个星号代表包下面的接口或类名任意。
       第三个星号代表包下面的接口或类的方法名任意。
       小括号里的两个点代表方法参数任意   。
    -->
    <aop:pointcut expression="execution(* com.skeyedu.hibernate.service.*.*(..))"
    id="mycutpoint" />
    <!--
    以何种方式处理知道了,对象进行处理知道了,下面就是整合了
    -->
    <aop:advisor advice-ref="myadvice" pointcut-ref="mycutpoint" />
    </aop:config>
    </beans>
    这个是AOP的一个重要方面。。面向切面编程
      

  9.   

    恩。。楼上这个美女回答的也不错啊! 正好是我们今天讲的内容。。Spring 合并Hibernate。完全一样呢??不过希望你还是用自己的话回答我的问题,我想看到的个人的理解。。不要太多的代码。。
      

  10.   

    比如一个系统的日志记录功能,每个业务逻辑层的方法最后都要调用LogManager类的方法来记录日志,这样很麻烦,且LogManger有变化,所有逻辑层方法代码都要变AOP的思想就是把LogManager的代码从每个业务逻辑层的方法中抽取出来,通过JDK类反射机制使每个业务逻辑层方法执行前或者执行后调用LogManger的方法记录日志