`

groovy 热部署

阅读更多

groovy 可以实现热部署。下面对groovy的初次使用进行简单记录。

 

1.引入groovy依赖包

<dependency>
   <groupId>org.codehaus.groovy</groupId>
   <artifactId>groovy-all</artifactId>
   <version>2.4.3</version>
</dependency>

2.groovy类加载器,在调用groovy前,要进行groovy加载。如果groovy文件被修改,或者替换,需要重新加载groovyClassKiader,否则新的groovy内容不会生效

private static GroovyClassLoader groovyClassLoader = null;

public static void initGroovy() {
    CompilerConfiguration compilerConfig = new CompilerConfiguration();
    compilerConfig.setSourceEncoding("UTF-8");
    groovyClassLoader = new GroovyClassLoader(Thread.currentThread().getContextClassLoader(), compilerConfig);
}

3.从java类中调用groovy, File指向.groovy文件

 

public List<PlatformMatch>  test(Map<String,Object>param, String exceptOrgs ){
    initGroovy();//每调用一次该方法就重新加载一遍也不太好,可以开放个接口出去,当groovy有修改的时候再调用
    List<PlatformMatch> list = new ArrayList<PlatformMatch>();

    //groovy 的定制化查询,
    File groovyFile = new File(NativePath.get("groovy")+"/"+param.get("orgId")+".groovy");
    if (!groovyFile.exists()) {
        groovyFile = new File(NativePath.get("groovy")+"/Common"+".groovy");
    }

    String result = "";
    try {
        // 获得GroovyShell_2加载后的class
        Class<?> groovyClass = groovyClassLoader.parseClass(groovyFile);
        // 获得GroovyShell_2的实例
        GroovyObject groovyObject = (GroovyObject) groovyClass.newInstance();
        // 反射调用sayHello方法得到返回值

        param.put("platFormMapper",platFormMapper);
        param.put("exceptOrg",ToolString.conventString(exceptOrgs.toString()));
        list = (List<PlatformMatch>)groovyObject.invokeMethod("customize",param);
    } catch (Exception e) {
        e.printStackTrace();
        return null;
    }
    return list;
}

 

 

4编写groovy文件里的内容。创建来.groovy文件,编辑方式与java一样,所有的java基础类都可以在groovy文件中使用。groovy文件可以放在任何地方。只要文件路径能找到就可以,当然要兼顾将来能够在服务运行中也能修改或者替换groovy文件,所以将groovy文件放到配置文件的路径下了。而不是放在类路径下。

 

public List<PlatformMatch>  customizePlatform (Map<String,Object>param, String exceptOrgs ){
    initGroovy();
List<PlatformMatch> list = new ArrayList<PlatformMatch>();
//groovy 的定制化查询
File groovyFile = new File(NativePath.get("groovy")+"/"+param.get("orgId")+".groovy");
    if (!groovyFile.exists()) {
        groovyFile = new File(NativePath.get("groovy")+"/Common"+".groovy");
}

    String result = "";
    try {
        // 获得GroovyShell_2加载后的class
Class<?> groovyClass = groovyClassLoader.parseClass(groovyFile);
// 获得GroovyShell_2的实例
GroovyObject groovyObject = (GroovyObject) groovyClass.newInstance();
// 反射调用sayHello方法得到返回值
param.put("platFormMapper",platFormMapper);
param.put("exceptOrg",ToolString.conventString(exceptOrgs.toString()));
list = (List<PlatformMatch>)groovyObject.invokeMethod("customize",param);
} catch (Exception e) {
        e.printStackTrace();
        return null;
}
    return list;
}

 

 5.groovy 文件在打包发布时会被maven过滤掉。解决方法

<plugin>
   <groupId>org.apache.maven.plugins</groupId>
   <artifactId>maven-antrun-plugin</artifactId>
   <version>1.7</version>
   <executions>
      <execution>
         <id>prepare-groovy-copy</id>
         <phase>generate-resources</phase>
         <goals>
            <goal>run</goal>
         </goals>
         <configuration>
            <tasks>
               <copy todir="target/groovy"
overwrite="true">
                  <fileset dir="src/main/resources/groovy">
                     <include name="*.groovy" />
                  </fileset>
               </copy>
            </tasks>
         </configuration>
      </execution>
   </executions>
</plugin>

 

分享到:
评论

相关推荐

    Java调用Groovy,实时动态加载数据库groovy脚本

    总的来说,Java调用Groovy并实时加载数据库中的Groovy脚本是一种强大而灵活的解决方案,特别适用于需要频繁调整业务逻辑或进行热部署的场景。通过结合Java的稳定性和Groovy的动态性,我们可以构建出更适应变化的系统...

    eclipse 热部署插件

    为了解决这个问题,"热部署"技术应运而生,而"Eclipse热部署插件"就是专门用于实现这一目的的工具。 热部署(Hot Deployment)允许开发者在不关闭或重启应用服务器的情况下,实时更新应用程序的代码,大大提高了...

    IDEA热部署修改mybatis映射文件工具 jr-ide-intellij-nightly.zip

    【标题】"IDEA热部署修改mybatis映射文件工具 jr-ide-intellij-nightly.zip" 描述了一款专门针对IntelliJ IDEA开发的插件,该插件旨在解决在开发过程中MyBatis映射文件(XML配置文件)无法实现热部署的问题。...

    idea+springboot+springloaded热部署例子

    标题 "idea+springboot+springloaded热部署例子" 涉及到的是使用IntelliJ IDEA(简称Idea)作为开发环境,结合Spring Boot和SpringLoaded进行应用的热部署技术。这一过程允许开发者在代码修改后无需重启服务器就能...

    Groovy-朝花夕拾-mht.rar

    7. **热部署**:Grails支持代码的热部署,修改后无需重启服务器即可看到效果。 MHT(MHTML)文件是单一文件网页格式,它将网页中的所有资源(如图片、样式表、脚本等)打包在一个文件中,方便存储和传输。在学习...

    Spring Boot实现热部署的实例方法

    Spring Boot 实现热部署的实例方法 Spring Boot 实现热部署的实例方法是指在 Spring Boot 项目中实现热部署的方法,即在代码修改后自动重新部署和热启动项目。以下是实现热部署的实例方法: 一、引入 devtools ...

    一篇文章带你搞定SpringBoot中的热部署devtools方法

    在SpringBoot开发过程中,热部署是一个非常实用的功能,它允许开发者在修改代码后无需手动重启应用就能看到改动的效果,大大提高了开发效率。本文将详细介绍如何在SpringBoot中使用devtools进行热部署,并探讨其工作...

    Springboot-Mybatis-Gradle:Gradle 构建SpringBoot项目,使用Mybatis来持久化,集成PageHelper分页插件,实现热部署

    此外,我们还将关注如何配置热部署,以便在开发过程中快速迭代和测试代码。以下是关于这些知识点的详细说明: 1. **Gradle**:Gradle是一种强大的构建自动化工具,它使用一种基于Groovy的领域特定语言(DSL)来编写...

    grails-3.0.5-ga (2/2)

    15. **热部署**: 开发过程中,Grails支持代码的热部署,修改后的代码无需重启服务器即可生效,大大加快了开发迭代速度。 综上所述,"grails-3.0.5-ga (2/2)"是一个包含Grails框架核心特性和改进的版本,适用于那些...

    springdevtools.rar

    而当我们谈到“热部署”(Hot Deployment),它是指在开发过程中,当源代码发生变化时,无需手动重启应用,系统可以自动检测到变化并重新加载修改,从而节省了大量时间,提高了开发效率。 在IntelliJ IDEA这样的...

    spring-boot-cli-1.1.6.RELEASE-bin.zip

    - Spring Boot CLI支持热部署,当你修改了Groovy脚本后,只需要保存文件,运行的应用会自动检测并重新加载变更,大大提高了开发效率。 6. **插件支持** - Spring Boot CLI可以与其他Groovy插件结合使用,例如...

    springboot_hotDeployment.zip

    当我们谈论Spring Boot的热部署(Hot Deployment)时,我们指的是在开发过程中,当源代码发生更改时,应用能够自动检测到这些变化并重新加载,而不需要手动重启整个应用程序服务器。 传统的Java Web应用开发中,...

    基于Java核心的轻量级、多语言支持的组件式规则/流程引擎设计源码

    本项目是一款基于Java核心的轻量级、多语言支持的组件式规则/流程引擎设计源码,共计包含3864个文件,其中Java...它能够支持多种语言脚本,处理复杂嵌套规则,并支持热部署和规则平滑刷新,旨在显著提升开发效率。

    springloaded-1.2.4.RELEASE.zip

    SpringLoaded是Spring框架提供的一款强大的热部署工具,主要用于在开发过程中快速实现代码修改后的自动重载,极大地提高了开发效率。这个"springloaded-1.2.4.RELEASE.zip"文件包含的是SpringLoaded的1.2.4版本,该...

    grails-3.3.1

    9. **热部署**:在开发过程中,Grails支持热部署,即修改代码后无需重启服务器,即可看到更新效果,提高了开发迭代速度。 10. **国际化支持**:Grails内置了i18n(Internationalization)机制,方便实现多语言应用...

    grails-2.4.2开发包

    Grails支持热部署,即在开发过程中修改的代码可以立即生效,无需重新启动服务器。这一特性极大地提高了开发效率,减少了等待时间。 综上所述,Grails 2.4.2作为一款成熟的Web开发框架,结合了Groovy的灵活性、...

    grails-4.0.4.zip

    8. **热部署**:Grails支持热部署,即在开发过程中,当源代码发生变化时,应用会自动重新加载,减少了手动重启应用的需要,提升了开发效率。 9. **RESTful服务**:Grails鼓励使用RESTful风格来构建Web服务,通过...

    springDM source

    7. **热部署**:OSGi环境下的应用可以进行热部署,即在不中断服务的情况下更新模块,这对于持续集成和快速迭代的开发流程非常有用。 8. **与Spring框架的无缝集成**:SpringDM无缝融入Spring生态系统,使得已有的...

    spring-boot-cli-2.1.5.RELEASE-bin.zip

    7. **热部署**:在开发过程中,CLI支持热部署,即代码修改后无需重启应用,提高了开发效率。 8. **插件支持**:Spring Boot CLI可以通过自定义插件扩展其功能,例如,可以使用`spring run`命令运行一个Groovy脚本,...

    springloaded-1.2.8.RELEASE

    SpringLoaded是Spring Boot开发过程中的一款重要工具,它主要用于实现应用的热部署,即在开发阶段无需重启服务器就能实时看到代码更改的效果。这个压缩包文件"springloaded-1.2.8.RELEASE"包含了该工具的特定版本,...

Global site tag (gtag.js) - Google Analytics