转载自
http://blog.chenlb.com/2009/04/spring-use-groovy-dynamic-bean.html
在 spring 中使用 groovy 等动态语言的好处就是:在服务器上改改或新加个 groovy 文件就可以有新的功能,不用重新打包并部署。对一些规则性的逻辑处理、动态性强的应用可以 groovy。
示例下在 spring 中使用 groovy,我机子环境 spring 2.5.5, groovy-1.5.7。
1、模拟业务接口:
package com.chenlb.groovy;
/**
* 业务模拟接口
*
* @author chenlb 2009-4-7 下午02:04:38
*/
public interface Hello {
String say(String name);
}
2、groovy 实现:
package com.chenlb.groovy;
class GroovyHello implements Hello {
def blog;
String say(String name) {
return "Hello ${name}@${blog}"
}
void setUrl(String blog) {
this.blog = blog;
}
}
3、spring 配置 applicationContext-groovy.xml:
<?xml version="1.0" encoding="UTF-8"?>
<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="groovyHello" script-source="classpath:com/chenlb/groovy/GroovyHello.groovy">
<lang:property name="blog" value="http://blog.chenlb.com"></lang:property>
</lang:groovy>
</beans>
<?xml version="1.0" encoding="UTF-8"?>
<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="groovyHello" script-source="classpath:com/chenlb/groovy/GroovyHello.groovy">
<lang:property name="blog" value="http://blog.chenlb.com"></lang:property>
</lang:groovy>
</beans>
4、运行:
package com.chenlb.groovy;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.FileSystemXmlApplicationContext;
public class Main {
public static void main(String[] args) {
ApplicationContext context = new FileSystemXmlApplicationContext("classpath:applicationContext-groovy.xml");
Hello hello = (Hello) context.getBean("groovyHello");
System.out.println(hello.say("chenlb"));
}
}
package com.chenlb.groovy;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.FileSystemXmlApplicationContext;
public class Main {
public static void main(String[] args) {
ApplicationContext context = new FileSystemXmlApplicationContext("classpath:applicationContext-groovy.xml");
Hello hello = (Hello) context.getBean("groovyHello");
System.out.println(hello.say("chenlb"));
}
}
结果:
Hello chenlb@http://blog.chenlb.com
要在 spring 中用 groovy,依赖的jar有:antlr-2.7.6.jar、aopalliance.jar、asm-2.2.3.jar、asm-commons-2.2.3.jar、asm-util-2.2.3.jar、groovy-1.5.5.jar在spring 的 lib中可以找到,还有spring-aop-2.5.5.jar。当然也可以把groovy-1.5.5.jar换成groovy-1.5.7.jar
分享到:
相关推荐
在 Spring 中动态使用 Groovy 脚本可以使用以下步骤: 首先,编写 Java 的业务接口类,例如 HelloWorldService 接口,该接口定义了一个 sayHello 方法。然后,编写 Groovy 类实现这个接口,例如 ...
`spring-beans-groovy`是Spring框架的一个组成部分,它允许我们在Groovy脚本中定义Spring的Bean定义,提供了一种更加灵活和动态的方式来创建和管理Bean。这个模块的核心功能是将Groovy脚本编译成Bean定义,然后由...
Groovy的动态性使得编写Spring配置和Bean定义更加直观,而Spring Boot的"约定优于配置"理念与Groovy的简洁性相得益彰。 ```groovy @RestController class HelloWorldController { @GetMapping('/') String hello...
在"spring工程下注入远程groovy脚本文件"的应用场景中,Groovy被用来编写动态脚本,这些脚本可能包含业务逻辑或者扩展功能。Spring框架通过其强大的Bean工厂,可以加载并执行这些Groovy脚本。这通常涉及到Spring的...
在描述中提到的博客链接(由于实际无法访问,这里仅做理论分析),可能会详细探讨如何在实际项目中结合Groovy和Spring进行Web开发,包括Groovy的脚本配置、Bean定义、以及可能的Grails框架应用实例。 标签"源码"和...
动态加载指定目录下的groovy脚本,并将其注册为groovy bean,放置于ApplicationContext容器中,并使用命名空间进行分类区分(一个namespace对应于一个ApplicationContext)。同时能够动态感知到groovy脚本的新增、修改...
JUN SpringBoot API Service 是一个基于SpringBoot+Groovy+SQL动态生成API并动态发布,且发布后可动态执行groovy脚本及SQL脚本的API服务项目。提供在线执行动态程序脚热加载本及动态生成API并执行的功能。支持动态...
Spring Boot提供了对Groovy的支持,允许我们在应用中使用Groovy脚本来定义Bean或其他组件。要启用Groovy支持,你需要在`build.gradle`或`pom.xml`中添加Groovy的相关依赖。对于Gradle,添加如下依赖: ```gradle ...
在Spring框架中,我们通常使用`ApplicationContext`来创建Bean工厂的测试环境,因为它不仅包含了Bean工厂的功能,还提供了获取所有Bean的能力以及事件发布等功能。编写测试用例时,可以通过`@Test`注解配合`@...
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来...
- **基于XML的配置元数据组合**:可以在一个项目中使用多个XML文件来组织配置信息,并通过`ClassPathXmlApplicationContext`来加载这些文件。 - **Groovy Bean Definition DSL**:可以使用Groovy脚本来动态地配置...
Spring Boot与Groovy的结合也是常见的应用场景,Groovy的简洁语法使得配置Spring Bean变得简单易懂。 Groovy还广泛应用于持续集成工具Jenkins的脚本编写,通过Jenkinsfile来定义构建流程。此外,Spock是一个用于...
- Groovy可以无缝集成到Spring框架中,创建Spring Bean和配置文件。 - 与Java EE平台集成,如EJB、JMS、JPA等,提供了更简单的API和更灵活的编程模型。 - 与大数据技术结合,如Apache Kafka、Hadoop等,可以编写...
8. **动态语言 Bean 在 Spring 中的应用 (Dynamic language beans in Spring)** - **内容:** 介绍了如何将 Groovy 作为 Spring 的一部分进行集成。 - **适用场景:** 使用 Spring 进行应用开发。 9. **安全 ...
标题 "Groovy+Tapestry5+Spring2.5+Hibernate3.2实现CRUD" 涉及到的是一个使用几种技术栈构建Web应用程序的示例。这个项目结合了Groovy、Tapestry 5、Spring 2.5和Hibernate 3.2,旨在展示如何在实际开发中进行数据...
在Spring框架中,Groovy的使用能够提升开发效率。Spring支持Groovy作为配置语言,可以用来编写XML替代的配置脚本,使得配置更加简洁和易读。例如,使用Groovy的DSL(领域特定语言)可以更直观地定义bean和依赖关系。...
而且,由于其基于IntelliJ平台,因此兼容性良好,适用于Java、Groovy、Kotlin等多语言的Spring开发。 总的来说,Spring Assistant插件是Spring开发者在IntelliJ IDEA中不可或缺的工具。它通过增强IDE的Spring相关...