diggbag

          BlogJava 聯系 聚合 管理
            0 Posts :: 13 Stories :: 6 Comments :: 0 Trackbacks

          1.使用背景:項目中想使用規則引擎,調研后發現流行的開源規則引擎都比較重量級,考慮到項目只需要通過配置文件設定規則集,故使用java動態使用groovy即可達到目的;

          2.通過以下方式配置spring使用groovy,和采用java編程沒有太大區別,groovy提供較平順的從java過來的學習曲線,下面的例子中的groovy類活生生就是一個java類,只不過是寫在xml文件中的java類罷了;

          3.spring通過org.springframework.scripting.groovy.GroovyScriptFactory類反射生成groovy類,由于使用到jdk的動態代理,所以所有用groovy定義的類必須實現java定義的接口,這是可以運行的關鍵;

          4.配置spring.xml

          <beans xmlns="http://www.springframework.org/schema/beans"
            xmlns:lang="http://www.springframework.org/schema/lang"
           xsi:schemaLocation="
                  http://www.springframework.org/schema/beans
                  http://www.springframework.org/schema/beans/spring-beans.xsd
                  http://www.springframework.org/schema/lang
                  http://www.springframework.org/schema/lang/spring-lang-2.5.xsd
            "
           default-autowire="byName">

          此文件頭必不可少,否則無法識別lang標簽;

          <lang:groovy id="groovyHello" >
            <lang:inline-script>
                  <![CDATA[
                  package com.jd.fms;
                      import com.jd.fms.netty.GroovyHelloWorld;
                      public class TestGroovyHelloWorld implements GroovyHelloWorld{
              public void doit(){
              System.out.println("hello world");
              }
             }
                  ]]>
              </lang:inline-script>
           </lang:groovy>

          采用lang:groovy定義groovy片段,當然也可以采用

          <lang:groovy id=" script-source="....">的方式引入文件。
          不要忘記的是在工程中定義GroovyHelloWorld的接口,該接口需要實現一個doit方法。
          5.項目中直接通過
          @Autowired
           GroovyHelloWorld groovyHelloWorld;
          調用即可;
          6.groovy為java提供了很好的動態語言能力,如果項目沒有必要使用太重量級的規則引擎,
          那么使用動態語言讓業務人員直接配置也不失為一個好方法。

           

          posted on 2012-04-10 17:55 哲同 閱讀(1994) 評論(0)  編輯  收藏 所屬分類: java相關
          主站蜘蛛池模板: 梅州市| 吴旗县| 晋城| 咸宁市| 象山县| 宜兰市| 三台县| 嫩江县| 怀化市| 海原县| 牡丹江市| 丹江口市| 六盘水市| 宽城| 翁源县| 水富县| 宁陕县| 杂多县| 和政县| 尼木县| 息烽县| 四会市| 平和县| 漳州市| 扎赉特旗| 莎车县| 来凤县| 许昌市| 汤原县| 黄陵县| 连云港市| 阿合奇县| 益阳市| 黄骅市| 县级市| 伊金霍洛旗| 上思县| 浮山县| 巴东县| 平塘县| 水富县|