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 哲同 阅读(1973) 评论(0)  编辑  收藏 所属分类: java相关

只有注册用户登录后才能发表评论。


网站导航: