http://blog.sina.com.cn/s/blog_82a09f1001018wt3.html
Groovy 是 “用于 Java 虚拟机的一种敏捷的动态语言”,它 “以 Java 的强大功能 为基础,同时又包含由 Python、Ruby 和 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>
相关推荐
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来...
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...
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. ...
第8_章:Spring Boot集成Groovy混合Java开发 数据库使用mysql,ORM层使用mybatis,模板引擎使用freemarker,内置工具使用Gradle。本章我们使用SpringBoot集成Groovy混合Java开发一个极简的RestAPI。 关于Groovy语言...
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...
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-百里香香草描述这是一个使用Gradle构建的springboot Web应用程序,它使用STOMP子协议通过websocket与普通javascript thymeleaf客户端进行通信。 对于客户,我们是指任何数量的...
RabbitMQ Greenplum 数据库等Tomcat Apache HtψServer Groovy 里的一些顶级开发者、 DevOps 理论的提出者都属于Pivotal 团队 Spring 团队在现有 Spring 框架的基础上,开发了一个新框架:Spring Boot ,用来简化...
gs-spring-boot, 使用 Spring Boot 构建应用程序 标记项目弹簧引导groovy测试弹簧引导目录你将构建什么。你需要什么。了解你可以使用 Spring Boot 做什么。创建一个简单的网络应用程序。创建一个应用程序类运行应用...
使用Spring Cloud Contract测试微服务 ... 一种实现方法是使用Groovy Contract DSL,您可以在其中使用Groovy DSL定义请求-响应交互,此示例应用程序中正在使用它。 以下情况的示例:从服务器请求id=1的
Spring Boot CLI spring jar app.jar sample.groovy && java -jar app.jar 在另一个 shell 中,使用 curl 查询服务或者您可以查看基于 Spring Boot Java 的版本: mvn clean spring-boot:run 这些选项中的任何一个都...
安装说明当地环境已安装mondgodb(在本地使用3.0.6) 已安装gradle(在本地使用gradle-2.6) 打开mongo终端在\ deploy目录中运行* .mongo 运行[gradle bootRun]作为Spring Boot启动开班创建一个DIY装备将装备添加为...
比较使用Dagger 2与Spring 5在比萨在线商店中如何创建和测试简单服务 这个主意 编写一个包含以下内容的典型(虚拟)微服务: REST前端(通常是Web ui或移动应用程序可以访问的前端) 披萨目录服务,可访问可用的...
web项目设置在Servlet的context parameter中 事件Application Event 自定义事件,集成ApplicationEvent 定义事件监听器,实现ApplicationListener 使用容器发布事件 Spring高级话题 Spring Aware ...
Spring源码3.2处理版 可直接导入Eclipse使用 可能需要eclipse的插件groovy也比较简单 jdk1.7 没想过要积分 但好像没有这个选项
2 开发技术介绍 2.1 SpringBoot框架 Spring Boot是Pivotal团队的一个新框架,旨在... 更简单的方法是使用Groovy enVironment Manager (GVM) ,它负责处理Boot版本的安装和管理。可以从GVM命令行GVM install springboot
2 开发技术介绍 2.1 SpringBoot框架 Spring Boot是Pivotal团队的一个新框架,旨在... 更简单的方法是使用Groovy enVironment Manager (GVM) ,它负责处理Boot版本的安装和管理。可以从GVM命令行GVM install springboot
更简单的方法是使用Groovy enVironment Manager(GVM),它负责处理Boot版本的安装和管理。 可以从GVM命令行GVM install springboot安装Boot及其CLI。 在OS X上安装Boot时可以使用Homebrew包管理器。要完成...
更简单的方法是使用Groovy enVironment Manager(GVM),它负责处理Boot版本的安装和管理。 可以从GVM命令行GVM install springboot安装Boot及其CLI。 在OS X上安装Boot时可以使用Homebrew包管理器。要完成...