使用Java的动态代理,可以实现

解决方案 »

  1.   

    再者,我如果要把这个做成一个构件,我只要一制定一个特定的java类文件,我就在当前的java类文件的执行中加入我的一些东西,这样的话用动态代理实现好象就不怎么行了?
    麻烦指导一下!
      

  2.   

    动态代理实现方法拦截
    你可以用spring  这样会比较简单
    用动态代理的话 只能对接口中的方法实现拦截
    这就是现在炒的很热的传说中的AOP另外  你所说的java类文件的执行中 是指什么?????????
    对象的创建?还是某些方法的调用? 或者是对象存在的期间 按一定的时间间隔执行??
      

  3.   

    spring好象没办法解决,spring只能拦截被他托管的对象的方法
      

  4.   

    AOP的实现现在一般可以通过三种方式来实现
    1、对象的动态代理模式可以
       因为java1.3开始有了动态代理,这种方式很流行,spring采用的aop主要依靠这个东东
       Proxy,InvocationHandler是这个实现的关键,具体的jdk文档很详细
    2、动态字节码
      这个主要用于类的aop实现,动态生成一个现有类的字类,并给予加强,这个方法也是spring对类的加强时采用的,其中最多的还是hibernate的运用更是非常普遍
    3、自定义ClassLoader
      这个方法主要是对java字节码文件加载时采用的一种方法,因为这个方法很危险,所有现在基本已经抛弃我建议使用动态代理,至于楼主提出的“对每一个类”都要拦截,我希望你采用一个很适合的设计模式来设计这个构件,我自身认为任何构件都有一定的适用环境,如果真想提高它的可扩展性,我想回调接口这个方法能给予一定帮助。
      

  5.   

    看看PROXY模式,你模仿一个就好了,要加载不同的底层实现的话反转注入就可以了。用SPRING也可以,道理是一样的