博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Groovy在Spring中的简单使用
阅读量:6520 次
发布时间:2019-06-24

本文共 3145 字,大约阅读时间需要 10 分钟。

hot3.png

Groovy 是 用于 Java 虚拟机的一种敏捷的动态语言,它 以 Java 的强大功能 为基础,同时又包含由 PythonRuby 和 Smalltalk 等语言带来的强大附加功能 ,例如动态类 型转换、闭包和元编程(metaprogramming)支持。它是一种 成熟的面向对象编程语 言,既可以用于面向对象编程,又可以用作纯粹的脚本语言。

Groovy 特别适合与 Spring 的动态语言支持一 起使用,因为它是专门为 JVM 设计的,设计时充分考虑了 Java 集成,这使 Groovy 与 Java 代码的互 操作很容易。它的类 Java 语法对于 Java 开发人员来说也很自然。

在Spring中动态使用Groovy脚本
(1)首先 编写java的业务接口类

    package com.springandgroovy;

 

    public interface HelloWorldService {

         String sayHello();

    }

(2) 编写groovy类实现这个接口(注意:该文件名是HelloWorldServiceImpl.groovy)

   package com.springandgroovy;

 

   public class HelloWorldServiceImpl  implements HelloWorldService{

       String name;

       String sayHello(){

       return "Hello $name!!!. Welcome to Scripting in Groovy.";

       }

  }

(3)比较关键的是spring配置文件,在文件的头部需要lang的名字空间,以便识别 <lang:groovy ...

   <beans xmlns="http://www.springframework.org/schema/beans"

       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

       xmlns:lang="http://www.springframework.org/schema/lang"

       xsi:schemaLocation="http://www.springframework.org/schema/beans

         http://www.springframework.org/schema/beans/spring-beans-2.5.xsd

        http://www.springframework.org/schema/lang

         http://www.springframework.org/schema/lang/spring-lang-2.5.xsd">

      <lang:groovy id="helloWorldService"

        script-source="classpath:com/springandgroovy/HelloWorldServiceImpl.groovy">

         <lang:property name="name" value="meera"/>

      </lang:groovy>

   </beans>

(4) 另外,可以设置默认的延时刷新时间:

        <lang:defaults refresh-check-delay=”60000″ />

       <lang:groovy id=”helloWorldService” refresh-check-delay=”1000″

                 script-source=”classpath:com/springandgroovy/HelloWorldServiceImpl.groovy”>

      <lang:property name="name" value="meera"/>

    </lang:groovy>

(5)测试

   package com.springandgroovy;

 

   import java.io.IOException;

 

   import org.springframework.context.ApplicationContext;

   import org.springframework.context.support.ClassPathXmlApplicationContext;

 

   public class Main {

       public static void main(String[] args) throws IOException {

ApplicationContext context = new ClassPathXmlApplicationContext("groovySpring.xml");

HelloWorldService service = (HelloWorldService) context.getBean("helloWorldService");

           System.in.read();

          System.out.println(service.sayHello());

       }

   }

(6)还可以将HelloWorldServiceImpl写在spring的配置文件中,如下所示:(不提倡使用此方法) 

   <beans xmlns="http://www.springframework.org/schema/beans"

       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

       xmlns:lang="http://www.springframework.org/schema/lang"

       xsi:schemaLocation="http://www.springframework.org/schema/beans

         http://www.springframework.org/schema/beans/spring-beans-2.5.xsd

            http://www.springframework.org/schema/lang

            http://www.springframework.org/schema/lang/spring-lang-2.5.xsd">

    <!--   

    <lang:groovy id="helloWorldService"

        script-source="classpath:com/springandgroovy/HelloWorldServiceImpl.groovy">

        <lang:property name="name" value="meera">

     </lang:groovy>

    -->

    <lang:groovy id="helloWorldService">

        <lang:inline-script>

             <![CDATA[

                package com.springandgroovy;

                public class HelloWorldServiceImpl  implements HelloWorldService{

                    String name;

                    String sayHello(){

                    return "Hello $name. Welcome to Scripting in Groovy.";

                  }

          }

           ]]>

       </lang:inline-script>

      <lang:property name="name" value="meera"></lang:property>

   </lang:groovy>

 </beans>

转载于:https://my.oschina.net/u/2494018/blog/610031

你可能感兴趣的文章
WTL介绍
查看>>
应用程序框架实战三十四:数据传输对象(DTO)介绍及各类型实体比较(转)
查看>>
放量滞涨,抛出信号
查看>>
BeanFactory not initialized or already closed - call 'refresh' before accessing beans解决办法
查看>>
linux主机下的Vmware Workstation配置NAT设置 端口映射-Ubuntu为例
查看>>
unity physics joint
查看>>
TD的访问地址
查看>>
tmpFile.renameTo(classFile) failed 错误
查看>>
【甘道夫】Apache Hadoop 2.5.0-cdh5.2.0 HDFS Quotas 配额控制
查看>>
一张图看懂normal,static,sealed,abstract 的 区别
查看>>
Task的使用
查看>>
grep和正则表达式
查看>>
s:iterator巧妙控制跳出循环
查看>>
移动互联网思维
查看>>
Serv-U 的升级及数据备份和迁移【转】
查看>>
webstorm无法显示左边文件夹目录的解决方法
查看>>
数字校园-云资源平台 2014.10.26-人人通共享空间
查看>>
为你的网站加上SSL,可以使用HTTPS进行访问
查看>>
软件project--谈项目开发
查看>>
在Android中创建文件
查看>>