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的动态性,我们可以构建出更适应变化的系统...
为了解决这个问题,"热部署"技术应运而生,而"Eclipse热部署插件"就是专门用于实现这一目的的工具。 热部署(Hot Deployment)允许开发者在不关闭或重启应用服务器的情况下,实时更新应用程序的代码,大大提高了...
【标题】"IDEA热部署修改mybatis映射文件工具 jr-ide-intellij-nightly.zip" 描述了一款专门针对IntelliJ IDEA开发的插件,该插件旨在解决在开发过程中MyBatis映射文件(XML配置文件)无法实现热部署的问题。...
标题 "idea+springboot+springloaded热部署例子" 涉及到的是使用IntelliJ IDEA(简称Idea)作为开发环境,结合Spring Boot和SpringLoaded进行应用的热部署技术。这一过程允许开发者在代码修改后无需重启服务器就能...
7. **热部署**:Grails支持代码的热部署,修改后无需重启服务器即可看到效果。 MHT(MHTML)文件是单一文件网页格式,它将网页中的所有资源(如图片、样式表、脚本等)打包在一个文件中,方便存储和传输。在学习...
Spring Boot 实现热部署的实例方法 Spring Boot 实现热部署的实例方法是指在 Spring Boot 项目中实现热部署的方法,即在代码修改后自动重新部署和热启动项目。以下是实现热部署的实例方法: 一、引入 devtools ...
在SpringBoot开发过程中,热部署是一个非常实用的功能,它允许开发者在修改代码后无需手动重启应用就能看到改动的效果,大大提高了开发效率。本文将详细介绍如何在SpringBoot中使用devtools进行热部署,并探讨其工作...
此外,我们还将关注如何配置热部署,以便在开发过程中快速迭代和测试代码。以下是关于这些知识点的详细说明: 1. **Gradle**:Gradle是一种强大的构建自动化工具,它使用一种基于Groovy的领域特定语言(DSL)来编写...
15. **热部署**: 开发过程中,Grails支持代码的热部署,修改后的代码无需重启服务器即可生效,大大加快了开发迭代速度。 综上所述,"grails-3.0.5-ga (2/2)"是一个包含Grails框架核心特性和改进的版本,适用于那些...
而当我们谈到“热部署”(Hot Deployment),它是指在开发过程中,当源代码发生变化时,无需手动重启应用,系统可以自动检测到变化并重新加载修改,从而节省了大量时间,提高了开发效率。 在IntelliJ IDEA这样的...
- Spring Boot CLI支持热部署,当你修改了Groovy脚本后,只需要保存文件,运行的应用会自动检测并重新加载变更,大大提高了开发效率。 6. **插件支持** - Spring Boot CLI可以与其他Groovy插件结合使用,例如...
当我们谈论Spring Boot的热部署(Hot Deployment)时,我们指的是在开发过程中,当源代码发生更改时,应用能够自动检测到这些变化并重新加载,而不需要手动重启整个应用程序服务器。 传统的Java Web应用开发中,...
本项目是一款基于Java核心的轻量级、多语言支持的组件式规则/流程引擎设计源码,共计包含3864个文件,其中Java...它能够支持多种语言脚本,处理复杂嵌套规则,并支持热部署和规则平滑刷新,旨在显著提升开发效率。
SpringLoaded是Spring框架提供的一款强大的热部署工具,主要用于在开发过程中快速实现代码修改后的自动重载,极大地提高了开发效率。这个"springloaded-1.2.4.RELEASE.zip"文件包含的是SpringLoaded的1.2.4版本,该...
9. **热部署**:在开发过程中,Grails支持热部署,即修改代码后无需重启服务器,即可看到更新效果,提高了开发迭代速度。 10. **国际化支持**:Grails内置了i18n(Internationalization)机制,方便实现多语言应用...
Grails支持热部署,即在开发过程中修改的代码可以立即生效,无需重新启动服务器。这一特性极大地提高了开发效率,减少了等待时间。 综上所述,Grails 2.4.2作为一款成熟的Web开发框架,结合了Groovy的灵活性、...
8. **热部署**:Grails支持热部署,即在开发过程中,当源代码发生变化时,应用会自动重新加载,减少了手动重启应用的需要,提升了开发效率。 9. **RESTful服务**:Grails鼓励使用RESTful风格来构建Web服务,通过...
7. **热部署**:OSGi环境下的应用可以进行热部署,即在不中断服务的情况下更新模块,这对于持续集成和快速迭代的开发流程非常有用。 8. **与Spring框架的无缝集成**:SpringDM无缝融入Spring生态系统,使得已有的...
7. **热部署**:在开发过程中,CLI支持热部署,即代码修改后无需重启应用,提高了开发效率。 8. **插件支持**:Spring Boot CLI可以通过自定义插件扩展其功能,例如,可以使用`spring run`命令运行一个Groovy脚本,...
SpringLoaded是Spring Boot开发过程中的一款重要工具,它主要用于实现应用的热部署,即在开发阶段无需重启服务器就能实时看到代码更改的效果。这个压缩包文件"springloaded-1.2.8.RELEASE"包含了该工具的特定版本,...