好象是什么面向切面编程

解决方案 »

  1.   

    楼主自己google ,要么百度吧。这东西网上一大堆
      

  2.   

    面向切面编程可以给面向对象编程提供强大的辅助功能,开发者能够将系统中分散的模块通过切入点机制随时引入切面,增添诸如认证、声明等服务面向切面编程的原理和实现。
    切面(Aspect)是一个抽象出来的独立的功能模块,连接点(Join Point)是一个可以引入切面的接口,通知(Advice)是 包括Before、After、Around和Throw四种类型的处理逻辑。面向切面编程就是将底层大量而又分散的功能相似的模块集中起来,这些集中起来的功能模块就成为切面,在需要使用这些模块的地方设置连接点,通过配置文件以声明的方式把模块指定到所需的连接点,根据不同的通知在程序的不同位置注入代码。简单的实现示例如下:
    public class A {//含有显示字母“A”的行为do
    public void do(){
    System.out.println( “ A”);
    }
    }import java.lang.reflect.Method;//类Before为切面
    import org.springframework.aop.MethodBeforeAdvice;
    public class Before implements MethodBeforeAdvice{ 
    public void before(Method arg0,Object[] arg1,Object[] arg2)throws Throwable{
    System.out.println(“ Bingo!”);
    }
    }<?xml version="1.0" encoding="UTF-8"?>//beans.xml 配置
    <beans xmlns信息略">
    <bean id=”aTarget” class=”A”>//声明目标对象
    </bean>
    <bean id=”beforeAdvice” class=”Before”>//声明通知
    </bean>
    <bean id=”a” class=” org.springframework.aop.framework.ProxyFactoryBean”>
    <property name=”needBefore”>//创建带有通知的对象
    <list>
    <value>beforAdvice<value>//需要添加通知的列表
    <list>
    </property>
    <property name=”target”>
    <ref  bean=”aTarget”/>//所要应用的对象
    </property>
    </bean>
    </beans>import org.springframework.beans.factory.BeanFactory;//运行AOP程序
    import org.springframework.beans.factory.xml.XmlBeanFactory;
    import org.springframework.core.io.CladdPathResource;
    public class DoMain{
    public static void main(String[] args){
    ClassPathResource resource=new ClassPathResource(“beans.xml”);//配置文件载入内存
    BeanFactory factory=new XmlBeanFactory(resource);//Bean Factory读取配置信息
    A a=(A) factory.getBean(“a”);//对象实例化
    a.do();//调用类A下的行为
    }
    }运行上述main程序结果显示:
    Bingo!
    A
    这说明在调用类A的行为do前程序已经自动把类Before以前置通知方式调用。以同样的方式AOP可以在对象上以After、Around、Throw方式附加切面,这很好的解决诸如身份验证、拦截通知等问题。拥有AOP技术的Spring可以减少代码耦合,提高系统的灵活性扩张性,还使得单元测试变得更为容易。
    写读书报告时正好包括这个。。
      

  3.   

    大哥大嫂们介绍下Spring AOP
    呐,楼主这贴下面的相关问题中就有一篇回答甚多的帖子。