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

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

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

    隨筆-30  評論-123  文章-0  trackbacks-0
    Groovy被設計得非常輕量級,很容易遷入到任何Java應用系統。
    你可以使用BSF將Groovy腳本嵌入任何Java代碼中.但是Groovy提供了一個輕量級的緊密集成.下面是3種主要方法:

    1.使用Shell調試腳本或表達式
    在Groovy中你可以使用GroovyShell對Groovy腳本和表達式進行調試.GroovyShell允許你通過Binding對象傳入或傳出變量.
    //?從Java代碼中調用Groovy語句
    Binding?binding?=?new?Binding();
    binding.setVariable(
    "foo",?new?Integer(2));
    GroovyShell?shell?
    =?new?GroovyShell(binding);

    Object?value?
    =?shell.evaluate("println?'Hello?World!';?x?=?123;?return?foo?*?10");
    assert?value.equals(new?Integer(20));
    assert?binding.getVariable("x").equals(new?Integer(123));

    2.在Java中動態調用運行Groovy代碼
    你可以使用GroovyClassLoader將Groovy的類動態地載入到Java程序中并直接使用或運行它.
    下面是一個例子:
    ClassLoader?parent?=?getClass().getClassLoader();
    GroovyClassLoader?loader?
    =?new?GroovyClassLoader(parent);
    Class?groovyClass?
    =?loader.parseClass(new?File("src/test/groovy/script/HelloWorld.groovy"));

    //?調用實例中的某個方法
    GroovyObject?groovyObject?=?(GroovyObject)?groovyClass.newInstance();
    Object[]?args?
    =?{};
    groovyObject.invokeMethod(
    "run",?args);
    如果你想使用一個用Groovy腳本實現的接口,你可以這么使用它:
    GroovyClassLoader?gcl?=?new?GroovyClassLoader();
    Class?clazz?
    =?gcl.parseClass(myStringwithGroovyClassSource?"SomeName.groovy");
    Object?aScript?
    =?clazz.newInstance();
    MyInterface?myObject?
    =?(MyInterface)?aScript;
    myObject.interfaceMethod();
    ??
    如果某個Groovy類實現口MyInterface接口,那么上面的代碼就會很好的工作.myObject的使用方法與其他實現了MyInterface接口的Java對象一樣.

    3.Groovy腳本引擎
    對于那些想將Groovy腳本嵌入到服務器并且在每次修改后重新裝入的人來說,Groovy腳本引擎提供了一個徹底的解決方案.你可以設定系列CLASSPATH作為根來初始化Groovy腳本引擎,這些GLASSPATH可以是URL也可以是目錄名.接著你就可以這些根路徑下的任何Groovy腳本了.GSE會跟蹤腳本間的依賴關系,因此如果任何有依賴關系的腳本被修改,整顆樹將會重新編譯和載入.
    另外,每次執行腳本時,你都可以傳入一個包含腳本可接受屬性的Binding.腳本執行完以后,傳入腳本中的那些屬性在Binding中依然有效.下面是一個例子:
    /my/groovy/script/path/hello.groovy:
    output?=?"Hello,?${input}!"
    import ?groovy.lang.Binding;
    import ?groovy.util.GroovyScriptEngine;

    String[]?roots?
    = ? new ?String[]? {? " /my/groovy/script/path " ?} ;
    GroovyScriptEngine?gse?
    = ? new ?GroovyScriptEngine(roots);
    Binding?binding?
    = ? new ?Binding();
    binding.setVariable(
    " input " ,? " world " );
    gse.run(
    " test.groovy " ,?binding);
    System.out.println(binding.getVariable(
    " output " ));
    將打印 "Hello, world!".

    4.運行時依賴
    和JDK1.4一樣,Groovy Jar也依賴與ASM庫上的運行時,ASM庫包括4個Jar(asm-2.1.jar, asm-util-2.1.jar, asm-attrs-2.1.jar and asm-analysis-2.1). 也就是說,只要將上面的5個Jar添加到路徑中,你就能將輕松地Groovy嵌入到你的應用里.

    另一種方案可以不用那么多的Jar.你可以用GROOVY_HOME/embeddable目錄下的groovy-all-1.0-beta-x.jar.這個Jar包將Groovy和ASM組合打包成一個方便的Jar包.注意:groovy-all-1.0-beta-x.jar中的ASM類使用了不同的命名空間,因此要避免與使用ASM的庫發生沖突.
    posted on 2006-04-28 11:52 學二的貓 閱讀(10648) 評論(0)  編輯  收藏 所屬分類: Groovy
    主站蜘蛛池模板: 久久精品视频亚洲| 在线观看亚洲精品国产| 久久亚洲精品无码aⅴ大香| 无码免费又爽又高潮喷水的视频| 最好免费观看韩国+日本| 亚洲熟妇av午夜无码不卡| 在线观看无码的免费网站| 日本亚洲色大成网站www久久| 成年女人免费视频播放体验区 | 青青青免费国产在线视频小草| 久久久久亚洲精品美女| 久久精品免费电影| 久久亚洲日韩精品一区二区三区| 精品无码人妻一区二区免费蜜桃| 亚洲精品**中文毛片| 国产麻豆视频免费观看| 亚洲粉嫩美白在线| 999在线视频精品免费播放观看| 国产精品亚洲片夜色在线| 成年性生交大片免费看| 精品国产_亚洲人成在线| 久久综合亚洲色HEZYO国产| 麻豆精品不卡国产免费看| 久久精品国产亚洲AV麻豆网站 | 在线观看的免费网站| 亚洲人成人网站18禁| 亚洲高清最新av网站| 国产区在线免费观看| 亚洲AV无码一区二区乱孑伦AS| 99久久免费观看| 亚洲 欧洲 日韩 综合在线| 免费二级毛片免费完整视频| 免费国产污网站在线观看| 亚洲天堂一区二区三区| 国产一区二区三区在线观看免费 | 亚洲高清免费在线观看| 精品免费国产一区二区| a级毛片毛片免费观看久潮| 亚洲午夜精品国产电影在线观看| 日本免费人成黄页在线观看视频| 中文字幕在线成人免费看|