AOP,面向横切面的编程,这是相对于面向对向的编程的一种提高,
OOP:面向对像,就是考虑的如关于继承,多态,接口这些跟业务逻辑相关的核心的方法,
      而面向切面的呢,就是在这些核心方法里,我们要做日志,安全,事物等操作,而这些
      东西在每个核心的方法里都会用到,这样,这些非核心的应用就会遍布整个系统,管理是不是很麻烦?
      AOP就是为解决这个而存在的,具体的实现,楼主可以参考一下别的文档。
关于实现技术,有Aspect和Spring 的AOP框架,还有个Java的反向代理这么个东西?第三个好像是这个,记不太清了。
建议看看:精通Spring这本书,由浅入深,很不错的。

解决方案 »

  1.   

    这个只是说的话,你很难理解,具体还是要看代码;
    AOP就是一个切面,通俗点讲就是把程序切成两半,让后往里面添加自己的东西;思想就是这样,
    楼主既然接触spring,那么一定知道hibernate;
    public boolean add(Leave l) {
    boolean ks=true;
    try {
    session= sf.openSession();
    session.save(l);
    session.beginTransaction().commit();
    } catch (HibernateException e) {
    ks = false;
    e.printStackTrace();
    } finally {
    if(session!=null) {
    session.close();
    }
    }这是一个很普遍的数据库存储的代码,然而我们每次都要写出一样的代码来,而真正变化的往往只有session.save(l);这一句话,而且他的代码每次操作数据库都要重复写一遍;
    重复代码便代表此代码不够健壮;但是如果要移除,他们确实一个流程的,session.save(l);需要事务beginTransaction才能够递交,事务中夹杂着业务,对于面向对象而言是很难解决的;由此,我们可以利用AOP,AOP的思想就是分离业务中的事务等信息,把在事务中间的业务逻辑拿出来;
    当然这是以点概面的说法,不过只是让楼主能够简单的理解,面向切面而已
      

  2.   

    AOP,面向横切面的编程,这是相对于面向对向的编程的一种提高, 
    OOP:面向对像,就是考虑的如关于继承,多态,接口这些跟业务逻辑相关的核心的方法, 
          而面向切面的呢,就是在这些核心方法里,我们要做日志,安全,事物等操作,而这些 
          东西在每个核心的方法里都会用到,这样,这些非核心的应用就会遍布整个系统,管理是不是很麻烦? 
          AOP就是为解决这个而存在的,具体的实现,楼主可以参考一下别的文档。 
    看看这个package com.east.spring.proxy;import org.aspectj.lang.annotation.Before;
    import org.aspectj.lang.annotation.Pointcut;
    import org.aspectj.lang.annotation.Aspect;
    /**
     * @author:East(张栋芳)
     * @date:Nov 27, 2008
     * @content:使用Aspect来实现AOP
     * 
     */
    //定义一个Aspect表示这个类是一个切面的类
    @Aspect
    public class SecurityHandler{
    /**
     * 定义一个切入点 第一个*是方法的返回值
     * add*是以add开始的所有方法
     * ..是表示一个或多个参数
     * addAllMethod()这个方法是Pointcut的标识
     */
    @Pointcut("execution(* add*(..))")
    public void allMethod(){};
    /**
     * 引用PointCut的标识表示是在调用方法之前执行安全检查方法
         * 定义Advice,标识在那个切入点何处织入此方法
         */
    @Before("allMethod()")
    //安全检查方法
    public void checkSecurity(){
    System.out.println("----------checkSecurity-----------");
    }}