`
matt.u
  • 浏览: 129814 次
  • 性别: Icon_minigender_1
  • 来自: CQ
社区版块
存档分类
最新评论

Spring中使用Groovy动态Bean

阅读更多
转载自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

分享到:
评论

相关推荐

    Groovy在Spring中的简单使用

    在 Spring 中动态使用 Groovy 脚本可以使用以下步骤: 首先,编写 Java 的业务接口类,例如 HelloWorldService 接口,该接口定义了一个 sayHello 方法。然后,编写 Groovy 类实现这个接口,例如 ...

    spring-beans-groovy源码

    `spring-beans-groovy`是Spring框架的一个组成部分,它允许我们在Groovy脚本中定义Spring的Bean定义,提供了一种更加灵活和动态的方式来创建和管理Bean。这个模块的核心功能是将Groovy脚本编译成Bean定义,然后由...

    Java中使用Groovy的三种方式

    Groovy的动态性使得编写Spring配置和Bean定义更加直观,而Spring Boot的"约定优于配置"理念与Groovy的简洁性相得益彰。 ```groovy @RestController class HelloWorldController { @GetMapping('/') String hello...

    groovy+maven+spring

    在"spring工程下注入远程groovy脚本文件"的应用场景中,Groovy被用来编写动态脚本,这些脚本可能包含业务逻辑或者扩展功能。Spring框架通过其强大的Bean工厂,可以加载并执行这些Groovy脚本。这通常涉及到Spring的...

    groovy+spring在web中的应用

    在描述中提到的博客链接(由于实际无法访问,这里仅做理论分析),可能会详细探讨如何在实际项目中结合Groovy和Spring进行Web开发,包括Groovy的脚本配置、Bean定义、以及可能的Grails框架应用实例。 标签"源码"和...

    groovy-loader:在文件目录中动态加载Groovy脚本

    动态加载指定目录下的groovy脚本,并将其注册为groovy bean,放置于ApplicationContext容器中,并使用命名空间进行分类区分(一个namespace对应于一个ApplicationContext)。同时能够动态感知到groovy脚本的新增、修改...

    JUN SpringBoot API Service 是一个基于SpringBoot+Groovy+SQL动态生成API

    JUN SpringBoot API Service 是一个基于SpringBoot+Groovy+SQL动态生成API并动态发布,且发布后可动态执行groovy脚本及SQL脚本的API服务项目。提供在线执行动态程序脚热加载本及动态生成API并执行的功能。支持动态...

    groovy集成springboot动态执行

    Spring Boot提供了对Groovy的支持,允许我们在应用中使用Groovy脚本来定义Bean或其他组件。要启用Groovy支持,你需要在`build.gradle`或`pom.xml`中添加Groovy的相关依赖。对于Gradle,添加如下依赖: ```gradle ...

    spring 5.2.9 07 源码分析-spring的bean工厂准备工作 测试用例

    在Spring框架中,我们通常使用`ApplicationContext`来创建Bean工厂的测试环境,因为它不仅包含了Bean工厂的功能,还提供了获取所有Bean的能力以及事件发布等功能。编写测试用例时,可以通过`@Test`注解配合`@...

    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 Reference Core Technologies

    - **基于XML的配置元数据组合**:可以在一个项目中使用多个XML文件来组织配置信息,并通过`ClassPathXmlApplicationContext`来加载这些文件。 - **Groovy Bean Definition DSL**:可以使用Groovy脚本来动态地配置...

    Groovy学习资料

    Spring Boot与Groovy的结合也是常见的应用场景,Groovy的简洁语法使得配置Spring Bean变得简单易懂。 Groovy还广泛应用于持续集成工具Jenkins的脚本编写,通过Jenkinsfile来定义构建流程。此外,Spock是一个用于...

    groovy-all-2.4.8.jar

    - Groovy可以无缝集成到Spring框架中,创建Spring Bean和配置文件。 - 与Java EE平台集成,如EJB、JMS、JPA等,提供了更简单的API和更灵活的编程模型。 - 与大数据技术结合,如Apache Kafka、Hadoop等,可以编写...

    Groovy User Guide

    8. **动态语言 Bean 在 Spring 中的应用 (Dynamic language beans in Spring)** - **内容:** 介绍了如何将 Groovy 作为 Spring 的一部分进行集成。 - **适用场景:** 使用 Spring 进行应用开发。 9. **安全 ...

    Groovy+Tapestry5+Spring2.5+Hibernate3.2实现CRUD

    标题 "Groovy+Tapestry5+Spring2.5+Hibernate3.2实现CRUD" 涉及到的是一个使用几种技术栈构建Web应用程序的示例。这个项目结合了Groovy、Tapestry 5、Spring 2.5和Hibernate 3.2,旨在展示如何在实际开发中进行数据...

    groovy学习

    在Spring框架中,Groovy的使用能够提升开发效率。Spring支持Groovy作为配置语言,可以用来编写XML替代的配置脚本,使得配置更加简洁和易读。例如,使用Groovy的DSL(领域特定语言)可以更直观地定义bean和依赖关系。...

    idea spring assistant插件

    而且,由于其基于IntelliJ平台,因此兼容性良好,适用于Java、Groovy、Kotlin等多语言的Spring开发。 总的来说,Spring Assistant插件是Spring开发者在IntelliJ IDEA中不可或缺的工具。它通过增强IDE的Spring相关...

Global site tag (gtag.js) - Google Analytics