<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 165, comments - 198, trackbacks - 0, articles - 1
      BlogJava :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

    CGLib 學(xué)習(xí)

    Posted on 2007-11-05 10:22 G_G 閱讀(5786) 評(píng)論(3)  編輯  收藏 所屬分類: AOP
    看hbn 源代碼 發(fā)現(xiàn)用了 CGlib 這就看看這個(gè)jar 。特留個(gè)文 ^_^(轉(zhuǎn))http://www.nirvanastudio.org/java/cglib-%E6%8C%87%E5%8D%97.html

    CGlib 就2個(gè)例能說(shuō)明一切?
    先是使用類? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ??
    public?class?MyClass?{
    ?
    ????
    public?void?method()?{
    ????????System.out.println(
    "MyClass.method()");
    ????}

    ????
    public?void?method2()?{
    ????????System.out.println(
    "MyClass.method2()");
    ????}
    }

    例1:
    import?java.lang.reflect.Method;
    ?
    import?net.sf.cglib.proxy.Enhancer;
    import?net.sf.cglib.proxy.MethodProxy;
    import?net.sf.cglib.proxy.MethodInterceptor;
    ?
    public?class?Main?{
    ?
    ????
    public?static?void?main(String[]?args)?{
    ?
    ????????Enhancer?enhancer?
    =?new?Enhancer();
    ??? ??
    ??? ??? //在這代理了
    ????????enhancer.setSuperclass(MyClass.
    class);
    ????????enhancer.setCallback(?
    new?MethodInterceptorImpl()?);
    ?
    ??????? // 創(chuàng)造 代理 (動(dòng)態(tài)擴(kuò)展了MyClass類)
    ????????MyClass?my?
    =?(MyClass)enhancer.create();
    ?
    ????????my.method();
    ????}
    ?
    ????
    private?static?class?MethodInterceptorImpl?implements?MethodInterceptor?{
    ????????
    ????????
    public?Object?intercept(Object?obj,?
    ????????????????????????????????Method?method,?
    ????????????????????????????????Object[]?args,?
    ????????????????????????????????MethodProxy?proxy)?
    throws?Throwable?{
    ?
    ????????????System.out.println(method);
    ?
    ????????????proxy.invokeSuper(obj,?args);
    ?
    ????????????
    return?null;
    ????????}
    ????}
    }


    例2:
    import?java.lang.reflect.Method;


    import?net.sf.cglib.proxy.Enhancer;
    import?net.sf.cglib.proxy.MethodProxy;
    import?net.sf.cglib.proxy.MethodInterceptor;
    import?net.sf.cglib.proxy.NoOp;
    import?net.sf.cglib.proxy.Callback;
    import?net.sf.cglib.proxy.CallbackFilter;
    ?
    ?
    public?class?Main2?{
    ?
    ????
    public?static?void?main(String[]?args)?{
    ?
    ????????Callback[]?callbacks?
    =
    ????????????
    new?Callback[]?{?new?MethodInterceptorImpl(),??NoOp.INSTANCE?};
    ?
    ????????Enhancer?enhancer?
    =?new?Enhancer();
    ?
    ????????enhancer.setSuperclass(MyClass.
    class);
    ????????enhancer.setCallbacks(?callbacks?);
    ??????? //添加 方法過(guò)濾器? 返回1為不運(yùn)行 2 為運(yùn)行
    ????????enhancer.setCallbackFilter(?
    new?CallbackFilterImpl()?);
    ?
    ?
    ????????MyClass?my?
    =?(MyClass)enhancer.create();
    ?
    ????????my.method();
    ????????my.method2();
    ????}
    ?
    ????
    private?static?class?CallbackFilterImpl?implements?CallbackFilter?{
    ?
    ????????
    public?int?accept(Method?method)?{
    ?
    ????????????
    if?(?method.getName().equals("method2")?)?{
    ????????????????
    return?1;
    ?
    ????????????}?
    else?{
    ????????????????
    return?0;
    ????????????}
    ????????}
    ????}
    ?
    ????
    private?static?class?MethodInterceptorImpl?implements?MethodInterceptor?{
    ????????
    ????????
    public?Object?intercept(Object?obj,?
    ????????????????????????????????Method?method,?
    ????????????????????????????????Object[]?args,?
    ????????????????????????????????MethodProxy?proxy)?
    throws?Throwable?{
    ?
    ????????????System.out.println(method);
    ?
    ????????????
    return?proxy.invokeSuper(obj,?args);
    ????????}
    ????}
    }


    簡(jiǎn)單不 哈哈 比jdk 中的動(dòng)態(tài)代理好用 ,那還要接口? 不太方便 。

    評(píng)論

    # re: CGLib 學(xué)習(xí)  回復(fù)  更多評(píng)論   

    2007-11-07 10:03 by 雨奏
    @G_G
    兄弟能否說(shuō)說(shuō)用CGLIB有哪些限制或副作用?

    # re: CGLib 學(xué)習(xí)  回復(fù)  更多評(píng)論   

    2007-11-09 17:11 by G_G
    @雨奏
    限制或副作用到?jīng)]感覺(jué)到
    但功能明顯太單薄了
    和aspectj沒(méi)的比 切入表達(dá)式 的aspectj 和只可以硬編碼的切CGlib
    的功能用下就知道 CGlib 太簡(jiǎn)單了
    但他好用,好上手,給5分鐘就上了

    aspectj 我花了2星期才到理解程度 呵呵

    # re: CGLib 學(xué)習(xí)  回復(fù)  更多評(píng)論   

    2009-01-16 17:07 by Hill
    請(qǐng)問(wèn)一下。你真的可以運(yùn)行嗎?我前幾天做了一個(gè)和你這個(gè)差不多的。總報(bào)錯(cuò)。請(qǐng)指點(diǎn)一下啊。
    net.sf.cglib.core.CodeGenerationException: java.lang.reflect.InvocationTargetException-->null
    at net.sf.cglib.core.AbstractClassGenerator.create(AbstractClassGenerator.java:237)
    at net.sf.cglib.proxy.Enhancer.createHelper(Enhancer.java:377)
    at net.sf.cglib.proxy.Enhancer.create(Enhancer.java:285)
    at spring.AOPInstrument.getInstrumentedClass(AOPInstrument.java:28)
    at spring.CGLibTest.main(CGLibTest.java:24)
    Caused by: java.lang.reflect.InvocationTargetException
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:324)
    at net.sf.cglib.core.ReflectUtils.defineClass(ReflectUtils.java:384)
    at net.sf.cglib.core.AbstractClassGenerator.create(AbstractClassGenerator.java:219)
    ... 4 more
    Caused by: java.lang.SecurityException: class "spring.MessageWriter$$EnhancerByCGLIB$$29bc061d"'s signer information does not match signer information of other classes in the same package
    at java.lang.ClassLoader.checkCerts(ClassLoader.java:611)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:532)
    ... 10 more
    Exception in thread "main"

    只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: a毛片免费播放全部完整| 亚洲国产成人九九综合| 一本大道一卡二大卡三卡免费| 高清国语自产拍免费视频国产| 亚洲成在人线电影天堂色| 在线永久看片免费的视频| 久久久亚洲精品视频| 美女视频黄的免费视频网页| 亚洲午夜无码久久久久| 国产免费AV片在线观看| 日本亚洲欧洲免费天堂午夜看片女人员 | 久久99国产亚洲高清观看首页| 光棍天堂免费手机观看在线观看| 国产亚洲3p无码一区二区| 国产性生大片免费观看性| 亚洲第一福利视频| 亚洲精品免费在线| 亚洲色欲色欲www| 国产免费一区二区三区VR| 一个人看的在线免费视频| 亚洲成Av人片乱码色午夜| 亚洲视频免费一区| 亚洲性色精品一区二区在线| 四虎影永久在线高清免费| 亚洲gay片在线gv网站| 亚洲国产综合久久天堂| 成全高清在线观看免费| 久久狠狠爱亚洲综合影院| 午夜国产羞羞视频免费网站| 女人隐私秘视频黄www免费| 亚洲人色大成年网站在线观看| 在线观看91精品国产不卡免费| 二区久久国产乱子伦免费精品| 亚洲精品中文字幕无码AV| 国产免费私拍一区二区三区| a级毛片黄免费a级毛片| 精品亚洲456在线播放| 国产午夜亚洲不卡| 亚洲三级高清免费| 中文字幕免费在线视频| 亚洲综合色婷婷在线观看|