
书: https://pan.baidu.com/s/1jDVnfhmGRwu5jeEuV63Kcg?pwd=bmyj
笔记如下:
- 动态语言特性:Groovy作为JVM动态语言,支持脚本化编程与静态类型检查(
@TypeChecked
)。 - 语法糖与简洁性:
- 省略分号/括号(如
println "Hello"
),简化集合操作(each
/collect
)。 - 安全导航操作符(
?.
避免空指针)。
- 闭包(Closure):一等公民特性,支持柯里化(
curry
)与方法引用(&
操作符)。 - 与Java互操作:无缝调用Java类库,支持泛型、注解,编译为同规格字节码。
- DSL支持:通过闭包/元编程(Meta-programming)构建领域特定语言(如Gradle脚本)。
- 集合增强:
- 快捷初始化(
list = [1, 2, 3]
)。 - 函数式操作(
findAll
/inject
)。
- 字符串处理:
- GString支持变量嵌入(
"Value: $var"
)。 - 多行字符串(
'''...'''
)。
- 元编程(Metaprogramming):
- 运行时注入方法(
ExpandoMetaClass
)。 methodMissing
/propertyMissing
处理未定义调用。
- 静态编译优化:
@CompileStatic
提升性能(接近Java),牺牲部分动态特性。 - JSON处理:内置
JsonSlurper
/JsonBuilder
,无需第三方库解析/生成JSON。 - 文件操作:简化IO(如
new File("test.txt").eachLine { println it }
)。 - 并发编程:
GPars
库支持Actor模型/数据流(Dataflow)并发。 - 单元测试:与JUnit/Spock框架深度集成,
assert
语句智能断言。 - AST转换:编译时注解(如
@ToString
/@Canonical
)自动生成代码。 - SQL操作:
GroovySql
简化JDBC(sql.eachRow
)。 - 模板引擎:
SimpleTemplateEngine
生成动态文本(如HTML/邮件)。 - 与Spring集成:替代XML配置(Groovy Bean DSL),动态刷新Bean定义。
- 性能权衡:动态派发(Dynamic Dispatch)导致开销,关键路径可用
@CompileStatic
优化。 - 工具链支持:
- Groovy Console交互式执行。
groovyc
编译为字节码或直接运行脚本(groovy script.groovy
)。
- 应用场景:
- 测试脚本(Spock框架)。
- 构建工具(Gradle)。
- 快速原型开发。