groovy腳本

groovy腳本不知爲什麼物?anyway,下面經過簡單一個示例幫你揭開groovy的神祕面紗。java

0x01 groovy腳本

groovy腳本在個人使用過程當中,其語法和java語法很是相似,可是其是有一套屬於本身的腳本的,咱們能夠經過在java代碼中調用groovy腳本,就像調用一個方法同樣,能夠給groovy腳本傳遞一些必須的參數。測試

0x02 groovy腳本實例

這裏介紹在java中調用groovy腳本的方式示例以下:code

public class GroovyScriptClient {

    private static final String scriptContent = "String object = scriptContext.get(\"object\");" +
            "        return innerService.sayBye(object);";

    public static Script getGroovyScript(){

        Class<Script> clazz = clazz = new GroovyClassLoader().parseClass(scriptContent);

        Script script = null;

        try {
            script = clazz.newInstance();
        } catch (Exception ex){
            System.out.println("exception" + ex);
        }

        Map<String, String> params = new HashMap<String, String>();

        params.put("object", "yesterday");

        Binding binding = new Binding();
        binding.setVariable("scriptContext", params);
        binding.setVariable("innerService", new ServiceTest());

        script.setBinding(binding);

        return script;
    }

    public static void main (String args[]){
        Script script = GroovyScriptClient.getGroovyScript();
        Object scriptResult = script.run();
        System.out.println(scriptResult);
    }

};

class ServiceTest{

    public String sayBye(String object){
        return "forget " + object;
    }
}
  • 上面是一段腳本的測試代碼,這段代碼能夠算是一個腳本引擎的縮影,一個腳本引擎系統的核心。對象

  • scriptContent是一段簡單的groovy腳本ip

  • groovy.lang.GroovyClassLoader#parseClass(java.lang.String)解析腳本字符串字符串

  • 經過groovy.lang.Binding能夠給腳本傳遞參數。get

  • innerService的value是一個對象,在腳本中能夠直接使用這個對象,很是的方便。io

0x03 思考

適用與一些不須要發佈可是常常須要改變的情景,規模大的也能夠用於作腳本引擎。同時編寫腳本不須要對系統進行升級發佈減小了不少發佈流程,靈活修改等好處,後面還要增強groovy腳本的理解,能夠考慮後續寫一個腳本引擎來玩玩。class

相關文章
相關標籤/搜索