`

Groovy在Spring中的简单使用

 
阅读更多

http://blog.sina.com.cn/s/blog_82a09f1001018wt3.html

 

 

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>

 

分享到:
评论

相关推荐

    Spring-Reference_zh_CN(Spring中文参考手册)

    6.8.1. 在Spring中使用AspectJ来为domain object进行依赖注入 6.8.1.1. @Configurable object的单元测试 6.8.1.2. 多application context情况下的处理 6.8.2. Spring中其他的AspectJ切面 6.8.3. 使用Spring IoC来...

    Spring中文帮助文档

    6.8.1. 在Spring中使用AspectJ进行domain object的依赖注入 6.8.2. Spring中其他的AspectJ切面 6.8.3. 使用Spring IoC来配置AspectJ的切面 6.8.4. 在Spring应用中使用AspectJ加载时织入(LTW) 6.9. 更多资源 7...

    Spring 2.0 开发参考手册

    6.8.4. 在Spring应用中使用AspectJ Load-time weaving(LTW) 6.9. 其它资源 7. Spring AOP APIs 7.1. 简介 7.2. Spring中的切入点API 7.2.1. 概念 7.2.2. 切入点实施 7.2.3. AspectJ切入点表达式 7.2.4. ...

    bms:使用SpringBoot集成的Groovy混合Java开发一个极简的RestAPI。数据库使用mysql,ORM层使用mybatis,模板引擎使用freemarker,内置工具使用Gradle

    第8_章:Spring Boot集成Groovy混合Java开发 数据库使用mysql,ORM层使用mybatis,模板引擎使用freemarker,内置工具使用Gradle。本章我们使用SpringBoot集成Groovy混合Java开发一个极简的RestAPI。 关于Groovy语言...

    Spring API

    6.8.1. 在Spring中使用AspectJ进行domain object的依赖注入 6.8.2. Spring中其他的AspectJ切面 6.8.3. 使用Spring IoC来配置AspectJ的切面 6.8.4. 在Spring应用中使用AspectJ加载时织入(LTW) 6.9. 更多资源 7...

    spring chm文档

    6.8.1. 在Spring中使用AspectJ来为domain object进行依赖注入 6.8.2. Spring中其他的AspectJ切面 6.8.3. 使用Spring IoC来配置AspectJ的切面 6.8.4. 在Spring应用中使用AspectJ Load-time weaving(LTW) 6.9. ...

    groovy-web-gradle-spring-websocket-thyme-vanilla

    groovy-web-gradle-spring-websocket-百里香香草描述这是一个使用Gradle构建的springboot Web应用程序,它使用STOMP子协议通过websocket与普通javascript thymeleaf客户端进行通信。 对于客户,我们是指任何数量的...

    SpringBoot开发.pd

    RabbitMQ Greenplum 数据库等Tomcat Apache HtψServer Groovy 里的一些顶级开发者、 DevOps 理论的提出者都属于Pivotal 团队 Spring 团队在现有 Spring 框架的基础上,开发了一个新框架:Spring Boot ,用来简化...

    gs-spring-boot, 使用 Spring Boot 构建应用程序.zip

    gs-spring-boot, 使用 Spring Boot 构建应用程序 标记项目弹簧引导groovy测试弹簧引导目录你将构建什么。你需要什么。了解你可以使用 Spring Boot 做什么。创建一个简单的网络应用程序。创建一个应用程序类运行应用...

    spring-cloud-contract-demo:Spring Cloud Contract演示应用程序

    使用Spring Cloud Contract测试微服务 ... 一种实现方法是使用Groovy Contract DSL,您可以在其中使用Groovy DSL定义请求-响应交互,此示例应用程序中正在使用它。 以下情况的示例:从服务器请求id=1的

    spring-data-rest-sample:带有 Spring Data REST 的 Spring Boot CLI 应用程序

    Spring Boot CLI spring jar app.jar sample.groovy && java -jar app.jar 在另一个 shell 中,使用 curl 查询服务或者您可以查看基于 Spring Boot Java 的版本: mvn clean spring-boot:run 这些选项中的任何一个都...

    deckBuildingGame:用groovy编写的REST驱动的甲板建筑游戏

    安装说明当地环境已安装mondgodb(在本地使用3.0.6) 已安装gradle(在本地使用gradle-2.6) 打开mongo终端在\ deploy目录中运行* .mongo 运行[gradle bootRun]作为Spring Boot启动开班创建一个DIY装备将装备添加为...

    SpringDagger:比较使用Dagger 2与Spring 5在比萨在线商店中如何创建和测试简单服务

    比较使用Dagger 2与Spring 5在比萨在线商店中如何创建和测试简单服务 这个主意 编写一个包含以下内容的典型(虚拟)微服务: REST前端(通常是Web ui或移动应用程序可以访问的前端) 披萨目录服务,可访问可用的...

    springboot学习思维笔记.xmind

    web项目设置在Servlet的context parameter中 事件Application Event 自定义事件,集成ApplicationEvent 定义事件监听器,实现ApplicationListener 使用容器发布事件 Spring高级话题 Spring Aware ...

    Spring3.2处理板-Eclipse(mars)4.5 JAVA7

    Spring源码3.2处理版 可直接导入Eclipse使用 可能需要eclipse的插件groovy也比较简单 jdk1.7 没想过要积分 但好像没有这个选项

    大数据SpringBoot酒店客房管理系统(详细文档+完整源码+部署视频).zip

    2 开发技术介绍 2.1 SpringBoot框架 Spring Boot是Pivotal团队的一个新框架,旨在... 更简单的方法是使用Groovy enVironment Manager (GVM) ,它负责处理Boot版本的安装和管理。可以从GVM命令行GVM install springboot

    大数据SpringBoot学生在线管理系统(详细文档+完整源码+部署视频).zip

    2 开发技术介绍 2.1 SpringBoot框架 Spring Boot是Pivotal团队的一个新框架,旨在... 更简单的方法是使用Groovy enVironment Manager (GVM) ,它负责处理Boot版本的安装和管理。可以从GVM命令行GVM install springboot

    Java基于SpringBoot+MyBatis新闻推荐系统.zip

     更简单的方法是使用Groovy enVironment Manager(GVM),它负责处理Boot版本的安装和管理。 可以从GVM命令行GVM install springboot安装Boot及其CLI。 在OS X上安装Boot时可以使用Homebrew包管理器。要完成...

    Java基于SpringBoot+MyBatis校园资料分享平台.zip

     更简单的方法是使用Groovy enVironment Manager(GVM),它负责处理Boot版本的安装和管理。 可以从GVM命令行GVM install springboot安装Boot及其CLI。 在OS X上安装Boot时可以使用Homebrew包管理器。要完成...

Global site tag (gtag.js) - Google Analytics