Groovy - 舍与得

springboot集成groovy脚本 在我们的应用中引入脚本能力,可以很好的提升灵活性,我们的核心开发工作可以集中在核心平台能力的开发上,具体场景的功能可以通过脚本来实现,例如jenkins就可以通过groovy脚本来编写pipeline,可以很灵活的定制构建过程。 spring本身提供了groovy集成的机制,分为两种方式,一种是用groovy开发程序,跟用java开发类似,需要经过编译。一种是将groovy作为脚本来执行,不需要编译。在此我们介绍的是第二种方式,将groovy作为脚本来使用。 具体的代码参照 示例项目 https://git 阅读详情
宣布一下,开始关注Groovy,被某个人抨击了,说竟然不知道动态语言,晕。一google,跳出一个熟悉的blog:江南白衣,这小子,哪儿都有你啊:) ,白衣的风格是忽悠为主,走的是透明的路子(不过偶喜欢:) 另一个有用的是  http://blog.youkuaiyun.com/chenyun2000/category/42948.aspx ,这个兄弟作了详实的工作。
        经过扫盲,近于伪码的语法风格有所了解了(闭包,不错),它牺牲部分性能和健壮性,换来开发效率的提升,
     准备工作:
     Eclipse 3.1或更高版本, Groovy ide plugin(安装方法见 chenyun 的blog,直接上cvs上check out 然后发布为plugin), spring-sandbox.jar (这个提供了对groovy script的支持)


    关于它的用途现在主要是两方面:
   1. 单元测试,我自己原先有一个基类的BaseServiceTest了(注,我没有dao),主要是作两件事,一是用DbUnit 维持数据库中测试数据,二是让protected的被测实例可以自动由容器注入(能见spring-mock.jar的介绍),我新建一个GroovyServiceTest,使其扩展我的BaseTest,然后,打开Run菜单,在Java Application下添加一个主类,设为 groovy.util.GroovyTestSuite ,到第二页将被测的groovy文件加入,直接运行即可,当然你也可以用ant或maven来自动化地执行测试集,这些可以详见  http://www-128.ibm.com/developerworks/cn/java/j-pg11094/?ca=dwcn-newsletter-java

运行成功。这里有一个困惑的地方是,编辑器在我的UserManagerGroovyTest.groovy文件中显示了一个错误,一个醒目的红x,晕,no such class: com.xxx.BaseServiceTest ,我可都已经执行成功了呀,哎。希望groovy IDE快点升级,fix bug,造福乡里。
 
 2. 业务逻辑,可以看白衣的“那一吨的好处:)"?针对service接口,来一个Groovy的实现,至于spring怎么整合它们,看这一篇: http://www.javaeye.com/viewtopic.php?t=6902
   
   <bean id="groovyScriptFactory"
      class="org.springframework.beans.factory.script.groovy.GroovyScriptFactory">
      <property name="expirySeconds"><value>20</value></property>     
   </bean>

   <bean id="helloService"
      factory-bean="groovyScriptFactory"
      factory-method="create">
      <constructor-arg index="0">
         <value>classpath:/demo/HelloWorldImpl.groovy</value>
      </constructor-arg>
   </bean>

   一开始总报错,经过检查,原先用的是spring-1.2.4,退至spring 1.x版本后,正常通过。这里提一下,我用的spring-sandbox.jar是appfuse1.7带的,它是适配spring1.x的,你可以直接上cvs仓库,从/spring/sandbox 路径 check out最后的版本,自己编译,这样就可以适应最新的spring版本了。
  
    结论 :  对于易变的业务逻辑,用最接近自然语言的方式进行书写,免去部署的成本,提升开发效率,此谓“得”,失去的有:不好debug,IDE支持程度差(这个抵消一部分效率优势),性能的损害。如果将业务类全部采用groovy来写,需要较大的勇气,将其引入单元测试的编写是非常吸引人的实践,准备试推行一下。最近正在看《程序员修炼之道-从小工到专家》一书,提及投资自 “知识资产”,建议每个程序员不要墨守一门语言,通过Groovy的学习可以有效拓宽你的思路,是一些古旧Java程序员的冲出井沿的好绳索,Groovy毕竟和Java天生存在极其暖昧的关系:) 希望他尽快完善壮大,成为我们日常工具箱的一部分。


Groovy食谱: 第5章 命令行中的Groovy 阅读详情

相关推荐

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

groovy-loader-v2 load groovy scripts in file directory dynamically 简介 动态加载指定目录下的groovy脚本,并将其注册为groovy bean,放置于ApplicationContext容器中,并使用命名空间进行分类区分(一个namespace对应于一个ApplicationContext)。同时能够动态感知到groovy脚本的新增、修改以及删除事件,并自动重新加载。 原理 使用文件目录管理groovy bean:指定文件夹下的每一个一级文件夹对应一个namespace,某个一级文件夹下的所有groovy被注册成bean后会分配到同一个ApplicationContext 通过GroovyScriptFactory一级类加载器来实例化groovy脚本 通过扫描监听指定路径下groovy文件的变更,来接受groovy脚本的

Groovy基础知识一

一、概述 构建在强大的Java语言之上 并 添加了从Python,Ruby和Smalltalk等语言中学到的 诸多特征,例如动态类型转换、闭包和元编程(metaprogramming)支持 二、环境 没有特意去官网下载必要的组件。基于android studio并且使用idea来使用非常简便。 三、特点概述 基于java,也是面向对象的;借鉴Python,Ruby,Smalltalk等语...

FooTyzZ 1716

用Groovy实现DSL领域定义语言

在groovy中实现DSL领域特定语言的技术。 版权声明: 本系列文章是从原著《Groovy For Domain-Specific Languages》(原作者: Fergal Dearle)中翻译而来,从中加入了一些本人自己的读书笔记和理解。本系列文章不为任何商业目的,只为更好的传播 groovy dsl 技术知识。请转载者尊重原著的知识产权,如果违反原著的版权产生的任何法律问题,本人不负任何责任。

java groovy集成_Spring中集成Groovy的四种方式(小结)

groovy是一种动态脚本语言,适用于一些可变、和规则配置性的需求,目前Spring提供ScriptSource接口,支持两种类型,一种是ResourceScriptSource,另一种是 StaticScriptSource,但是有的场景我们需要把groovy代码放进DB中,所以我们需要扩展这个。ResourceScriptSource:在 resources 下面写groovy类StaticS...

weixin_39762478的博客 863

STM32双ADC同步采样实战:FFT测量相位差的5个关键细节

本文深入探讨了利用STM32双ADC同步采样结合FFT算法精确测量信号相位差的实战技巧。文章聚焦五个关键细节:确保ADC时钟同源、优化DMA缓冲区设计、信号调理与窗函数选择、精确的相位提取与解缠绕,以及系统误差校准与验证。这些细节是提升相位差测量精度、确保系统稳定性的核心,尤其强调了STM32配置中易被忽视的时钟同步问题。

oauth7security的博客 595

vmware vsphere 证书过期告警处理方法

vSphere Clinet 管理页面出现“证书告警” ,检查证书未发现现有证书有过期现象

m0_51902127的博客 3639

java groovy集成_Groovy 使 Spring 更出色,集成的基础知识

Spring2.0 支持将动态语言集成到基于 Spring 的应用程序中。Spring 开箱即用地支持 Groovy、JRuby和 BeanShell。以 Groovy、JRuby 或任何受支持的语言(当然包括 Java? 语言)编写的应用程序部分可以无缝地集成到Spring 应用程序中。应用程序其他部分的代码不需要知道或关心单个 Spring bean 的实现语言。Spring 支持动态语言意味...

weixin_35426348的博客 497

飞控芯片的隐形战场:传感器冗余与实时OS的可靠性革命

本文深入探讨飞控芯片在工业级无人机中的可靠性设计,聚焦传感器冗余架构与实时操作系统(RTOS)的容错机制。通过多IMU备份、自适应加权融合算法及NuttX、ChibiOS等RTOS的故障隔离技术,确保系统在极端环境下毫秒级自愈。文章还涵盖开源生态如PX4的跨平台移植及RISC-V架构的应用,为高可靠性飞控系统提供关键技术参考。

z5a6b的博客 877

ssm基础整合_整合基础

Spring 2.0引入了将动态语言集成到基于Spring的应用程序中的支持。 Spring开箱即用,支持Groovy,JRuby和BeanShell。 用Groovy,JRuby或任何其他支持的语言(当然包括Java™语言)编写的应用程序部分将无缝集成到Spring应用程序中。 您应用程序的其余代码无需了解或关心单个Spring bean的实现语言。 Spring对动态语言的支持意味着您...

cusi77914的博客 263

STM32F103 实例应用(10)——I2C读写24C32

一、应用简介 本文介绍24C32的读写,基于野火的软件I2C程序。 board_i2c.h /**=========================================================================== @file board_i2c.h @brief 本文件是用于I2C驱动 @author 青梅煮久 @version r0.1 @date 2021/01/13 -------------------------.

qq_34118600的博客 3447

别再算错了!深入SAP FI后台,看懂外币清账时汇兑损益的自动计算逻辑

刚接手一家跨国企业的SAP财务模块优化项目时,我遇到了一个棘手案例:每月末外币清账产生的汇兑损益金额总是与财务团队的预期存在差异。最令人困惑的是,系统似乎"擅自"计算出了1989.11元的损益,而财务人员反复手工验算都无法复现这个数字。这让我意识到,要真正掌握SAP FI的外币处理能力,必须深入理解系统后台的汇兑损益计算逻辑——不是停留在操作层面,而是穿透到算法内核。这个过程的精妙之处在于,损益金额不是简单比较两个时点的市场汇率,而是反映业务执行全周期的汇率影响。:损益金额与手工计算不符。

weixin_32932149的博客 474

Groovy 入门

Groovy 虽然支持 Java 的语法,但它并没有强迫我们学习新的类和库,而是通过向 JDK 中各种类添加方法,所以说 Groovy 扩展了 JDK, 这些扩展称之为 GDK(Groovy JDK)= null) {Groovy 通过在 java.lang.String 类上添加一个 execute() 方法,使一切变得简单。运行输出的结果与上面的一模一样。字符串名称语法是否可以混用是否多行转义字符单引号的'...'三个单引号的'''...'''是双引号的"..."是三个双引号的。

shaopipi的博客 2418

2018安徽省青少年信息学奥林匹克(AHOI)初中组

12 种合法的排列分别为:1, 3, 2, 4, 2, 3, 1, 4, 3, 1, 4, 2, 3, 2, 4, 1, 1, 3, 4, 2, 2, 3,4,1,1,4,2,3, 2,4,1,3, 4,1,3,2, 4,2,3,1, 1,4,3,2, 2,4,3,1。分为 2 组,一组的队员实力值是{4, 5, 2, 3},一组是{-4, -3, -5},其中最小的组人数为 3,可以发现没有比 3 更优的分法了。[0, 1, 1, 2]同样不是合法的分组方案,因为出现了两个实力值为 1 的选手。

weixin_42358969的博客 1143

Groovy基础入门

Groovy是运行在JVM中的一种动态语言,可以在Java平台上进行编程,使用方式基本与使用Java代码的方式相同,它的语法与Java语言的语法很相似,与Java相比,Groovy更加灵活、简洁,而且完成同样的功能基本上所需要的Groovy代码量会比Java的代码量少,它还增加了很多功能,如:函数式编程、运行时的灵活性以及许多元编程内容。它可以用来构建一个完整的工程,或者作为一个Module,第三方集成到Java代码中。甚至可以作为脚本在执行时动态编译。

zhangyifang_009的博客 2144

【SA8155P】AIS Camera相关内容的简单介绍

【SA8155P】AIS Camera相关内容的简单介绍

静谧、淡雅 1701

爬虫瑞数5案例:联通

瑞数动态安全 Botgate(机器人防火墙)以“动态安全”技术为核心,通过动态封装、动态验证、动态混淆、动态令牌等技术对服务器网页底层代码持续动态变换,增加服务器行为的“不可预测性”,实现了从用户端到服务器端的全方位“主动防护”,为各类 Web、HTML5 提供强大的安全保护。

老衲爱洗头的博客 4470

Groovy

Groovy虽然支持Java的语法但它并没有强迫我们学习新的类和库,而是通过向JDK中各种类添加方法,所以说Groovy扩展了JDK,这些扩展称之为GDK(Groovy JDK)。

qq_48114126的博客 1531

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

Groovy动态语言

Groovy是用于Java虚拟机的一种敏捷的动态语言,它是一种成熟的面向对象编程语言,既可以用于面向对象编程,也可以用作纯粹的脚本语言。使用该种语言不必编写过多的代码,同时又具有闭包和动态语言中的其他特性。/*Java代码*//*Groovy代码*/Groovy是JVM的一个替代语言,使用方式基本与Java代码的方式相同,该语言特别适合与Spring的动态语言支持一起使用。

lhl0306的博客 2759

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

groovy安装与配置

1.去官网下载:http://www.groovy-lang.org/download.html 或者Apache下载:https://archive.apache.org/dist/groovy/ 下载的比较慢,Apache可能快点 下载后解压后放到D:\soft\gradle 2.配置path路径: 变量:GROOVY_HOME 变量值:D:\soft\gradle\groovy-...

为梦想而奋斗,无悔_一叶扁舟的点滴成长! 1167

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

awesome-groovy完全指南:探索200+精选Groovy库与框架的终极资源

awesome-groovy是一个精心策划的Groovy资源集合,收录了200+精选的Groovy库、框架和工具,为开发者提供一站式的Groovy生态系统导航。无论你是刚接触Groovy的新手,还是寻找特定功能库的资深开发者,这份终极资源都能帮你快速找到所需工具,提升开发效率。 ## 为什么选择Groovy? Groovy作为一种强大的JVM语言,兼具Java的稳定性和Python的简洁性,在

gitblog_00163的博客 1016

Groovy简介与使用

简介 使用 应用 Groovy语法特性(相比于Java) Groovy与Java项目集成使用 GroovyShell GroovyClassLoader GroovyScriptEngine JSR-223 Groovy实现相关原理 Groovy代码文件与class文件的对应关系 对于没有任何类定义 对于仅有一个类 对于多个类 对于有定义类的脚本 Spring对Groo...

timestatic 6万+

Groovy实现热部署

Groovy是构建在JVM上的一个轻量级却强大的动态语言, 它结合了Python、Ruby和Smalltalk的许多强大的特性.Groovy就是用Java写的 , Groovy语法与Java语法类似, Groovy 代码能够与 Java 代码很好地结合,也能用于扩展现有代码, 相对于Java, 它在编写代码的灵活性上有非常明显的提升,Groovy 可以使用其他 Java 语言编写的库.动态类实现从文件生成,改动后能立即检测到。动态类实现从数据库中生成,改动后能立即检测到。

m0_53157173的博客 1824

JAVA中的Groovy

一:什么是Groovy   简单地说, Groovy 是下一代的 java 语言,跟 java 一样 , 它也运行在 JVM 中。作为跑在 JVM 中的另一种语言, groovy 语法与 Java 语言的语法很相似。同时, Groovy 抛弃了 java 烦琐的文法。同样的语句,使用 groovy 能在最大限度上减少你的击键次数——这确实是“懒惰程序员们”的福音。 二:Groovy安...

awing1234的博客 687

java调用groovy及groovy中如何使用springBean

一、概述 Groovy is a multi-faceted language for the Java platform. Apache Groovy是一种强大的、可选的类型化和动态语言,具有静态类型和静态编译功能,用于Java平台,目的在于通过简洁、熟悉和易于学习的语法提高开发人员的工作效率。它可以与任何Java程序顺利集成,并立即向您的应用程序提供强大的功能,包括脚本编写功能、特定于域的语言编写、运行时和编译时元编程以及函数式编程。 Groovy是基于java虚拟机的,执行文件可以是简单的脚本片段,也

feiqinbushizheng的博客 4440

【Groovy快速上手 ONLY ONE】Groovy与Java的核心差异

最近在使用的平台上写脚本的语言是Groovy,所以也学习一下,作为 Java 开发者,Groovy 对我们来说会非常友好,而且它的语法更简洁且支持动态类型,所以其实了解下Java和Groovy的差异点就可以快速上手了,以下是和。

MaoLin Tian's Blog 1648

【Groovy】Groovy环境搭建

Groovy 是一种基于 JVM 平台的敏捷且动态的编程语言,能与 Java 无缝集成。该语言由 James Stracham 和 Bob McWhirter 于 2003 年启动开发,在 2007 年 1 月发布第一个版本。Groovy 具有以下优势。Groovy 的语法比 Java 更加简洁,省略了繁琐的代码结构,例如分号、类型声明等,让开发者更专注于业务逻辑的实现。Groovy 是动态类型语言,无需显式声明变量类型,编译器会在运行时自动推断类型,提高了代码的灵活性和开发效率。

little_fat_sheep 1250
上一篇: Ruby on Rails 他山的宝石 - 改进我们的struts!
下一篇: 茶杯里的潮汐 - 梁静茹新专辑《丝路》中两首歌子
_chage
博客等级 码龄24年 2粉丝 51原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值