Groovy 作为 Java 生态的"动态增强版",不仅能简化日常编码,更能无缝融入 Java 主流技术栈。无论是 Spring Boot 微服务搭建,还是单体桌面程序开发,Groovy 都能轻松胜任。
一、与 Spring Boot 集成使用
Groovy 与 Spring Boot 集成堪称"黄金搭档",既能享受 Spring Boot 的自动配置、依赖管理能力,又能通过 Groovy 简化配置文件、实体类和业务代码,开发效率翻倍。
1.1 依赖引入
快速初始化(推荐)
通过 Spring Initializr 快速生成项目,选择:
- 语言:Groovy
- 构建工具:Maven/Gradle
- Spring Boot 版本:2.x 或 3.x(需与 Groovy 版本兼容,3.x 推荐 Groovy 4.x)
- 依赖:根据需求选择(如 Web、Data JPA、Redis 等)
生成的项目会自动配置 Groovy 依赖和编译插件,无需手动调整核心配置。
手动配置依赖(Maven 示例)
若需手动集成,在 Spring Boot 项目 pom.xml 中添加 Groovy 依赖,Spring Boot 会自动管理版本兼容性:
xml
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.7.18</version>
<relativePath/>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>com.example</groupId>
<artifactId>groovy-springboot-demo</artifactId>
<version>1.0-SNAPSHOT</version>
<dependencies>
<!-- Spring Boot Web 依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- Groovy 核心依赖(Spring Boot 管理版本) -->
<dependency>
<groupId>org.codehaus.groovy</groupId>
<artifactId>groovy</artifactId>
</dependency>
<!-- Spring Boot 测试依赖(支持 Groovy 测试) -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.codehaus.groovy</groupId>
<artifactId>groovy-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<!-- Spring Boot 打包插件(必选) -->
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<!-- 允许 Groovy 主类作为启动类 -->
<mainClass>com.example.GroovySpringBootApplication</mainClass>
</configuration>
</plugin>
<!-- Groovy 编译插件 -->
<plugin>
<groupId>org.codehaus.gmavenplus</groupId>
<artifactId>gmavenplus-plugin</artifactId>
<version>1.13.1</version>
<executions>
<execution>
<goals>
<goal>compile</goal>
<goal>testCompile</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
核心实战示例
Groovy 简化 Spring Boot 开发的关键场景:
- 启动类(无需额外配置,与 Java 写法一致):
groovy
package com.example
import org.springframework.boot.SpringApplication
import org.springframework.boot.autoconfigure.SpringBootApplication
@SpringBootApplication
class GroovySpringBootApplication {
static void main(String[] args) {
SpringApplication.run(GroovySpringBootApplication, args)
}
}
- Controller 简化(无需分号、类型声明,代码更简洁):
groovy
package com.example.controller
import org.springframework.web.bind.annotation.GetMapping
import org.springframework.web.bind.annotation.PathVariable
import org.springframework.web.bind.annotation.RestController
@RestController
class UserController {
// 动态类型参数,简化代码
@GetMapping("/user/{id}")
def getUser(@PathVariable id) {
// 直接返回 Map,无需封装实体类(适合快速接口开发)
[id: id, name: "Groovy User", age: 25]
}
}
- 配置文件简化(支持 Groovy 语法的
application.groovy):
groovy
// 替代 application.properties/yaml,支持动态表达式
server.port = 8080
spring.datasource {
url = "jdbc:mysql://localhost:3306/test"
username = "root"
password = "123456"
driverClassName = "com.mysql.cj.jdbc.Driver"
}
// 自定义配置,支持直接引用其他配置
app {
name = "Groovy-SpringBoot-Demo"
version = "1.0"
fullName = "${app.name}-${app.version}"
}
1.2 打包指南
Spring Boot 集成 Groovy 后,打包流程与纯 Java 项目一致,依赖 spring-boot-maven-plugin 或 spring-boot-gradle-plugin 即可生成可执行 JAR/WAR。
Maven 打包
- 执行打包命令:
mvn clean package -Dmaven.test.skip=true - 运行 JAR 包:
java -jar target/groovy-springboot-demo-1.0-SNAPSHOT.jar - 自定义配置运行:
java -jar target/groovy-springboot-demo-1.0-SNAPSHOT.jar --server.port=8081
Gradle 打包
- 执行打包命令:
gradle clean build -x test - 运行 JAR 包:
java -jar build/libs/groovy-springboot-demo-1.0-SNAPSHOT.jar - 快速运行(无需打包):
gradle bootRun
二、与 Swing、JavaFX 集成使用
Groovy 对 Swing、JavaFX 等桌面应用框架的集成极为友好,通过简洁语法简化 UI 布局代码,同时支持闭包简化事件绑定,让桌面应用开发更高效。
2.1 与 Swing 集成
Swing 是 Java 原生桌面 UI 框架,Groovy 无需额外依赖(核心依赖已包含 Swing 支持),可直接编写 UI 代码,通过闭包替代匿名内部类绑定事件。
实战示例:简易 Swing 窗口
groovy
import javax.swing.*
import java.awt.*
// 主窗口类
class GroovySwingDemo {
static void main(String[] args) {
// 启动 Swing 应用(确保在 EDT 线程中运行)
SwingUtilities.invokeLater {
// 创建窗口
def frame = new JFrame("Groovy Swing 示例")
frame.defaultCloseOperation = JFrame.EXIT_ON_CLOSE
frame.size = new Dimension(400, 300)
frame.layout = new FlowLayout()
// 创建组件
def label = new JLabel("请输入姓名:")
def textField = new JTextField(20)
def button = new JButton("点击问候")
def resultLabel = new JLabel("")
// 绑定按钮点击事件(闭包简化,替代匿名内部类)
button.addActionListener {
def name = textField.text ?: "访客"
resultLabel.text = "Hello, $name!"
}
// 添加组件到窗口
frame.add(label)
frame.add(textField)
frame.add(button)
frame.add(resultLabel)
// 窗口居中显示
frame.setLocationRelativeTo(null)
// 显示窗口
frame.visible = true
}
}
}
打包运行
- 按"Maven/Gradle 单体程序"的打包方式,将 Swing 应用打包为可执行 JAR。
- 运行命令:
java -jar groovy-swing-demo.jar - 注意事项:若出现 UI 渲染异常,可添加 JVM 参数:
java -Dsun.java2d.noddraw=true -jar groovy-swing-demo.jar
2.2 与 JavaFX 集成
JavaFX 是 Java 新一代桌面 UI 框架,支持更现代化的界面,Groovy 集成需引入 JavaFX 依赖,同时通过 javafx-maven-plugin 或 javafx-gradle-plugin 配置打包。
依赖引入(Maven 示例)
xml
<dependencies>
<!-- Groovy 核心依赖 -->
<dependency>
<groupId>org.codehaus.groovy</groupId>
<artifactId>groovy-all</artifactId>
<version>4.0.29</version>
<type>pom</type>
</dependency>
<!-- JavaFX 核心依赖(根据操作系统选择,或使用 all 包) -->
<dependency>
<groupId>org.openjfx</groupId>
<artifactId>javafx-controls</artifactId>
<version>17.0.9</version>
</dependency>
<dependency>
<groupId>org.openjfx</groupId>
<artifactId>javafx-fxml</artifactId>
<version>17.0.9</version>
</dependency>
</dependencies>
<build>
<plugins>
<!-- Groovy 编译插件 -->
<plugin>
<groupId>org.codehaus.gmavenplus</groupId>
<artifactId>gmavenplus-plugin</artifactId>
<version>1.13.1</version>
<executions>
<execution>
<goals>
<goal>compile</goal>
</goals>
</execution>
</executions>
</plugin>
<!-- JavaFX 打包插件 -->
<plugin>
<groupId>org.openjfx</groupId>
<artifactId>javafx-maven-plugin</artifactId>
<version>0.0.14</version>
<configuration>
<mainClass>com.example.GroovyJavaFXDemo</mainClass>
<!-- 指定模块(JavaFX 11+ 必需) -->
<modules>
<module>javafx.controls</module>
<module>javafx.fxml</module>
</modules>
</configuration>
</plugin>
</plugins>
</build>
实战示例:简易 JavaFX 窗口
groovy
import javafx.application.Application
import javafx.scene.Scene
import javafx.scene.control.Button
import javafx.scene.control.Label
import javafx.scene.control.TextField
import javafx.scene.layout.FlowPane
import javafx.stage.Stage
class GroovyJavaFXDemo extends Application {
@Override
void start(Stage stage) {
// 配置窗口
stage.title = "Groovy JavaFX 示例"
stage.width = 400
stage.height = 300
// 创建组件
def label = new Label("请输入姓名:")
def textField = new TextField()
textField.prefWidth = 200
def button = new Button("点击问候")
def resultLabel = new Label()
// 绑定按钮点击事件(闭包简化)
button.setOnAction {
def name = textField.text ?: "访客"
resultLabel.text = "Hello, $name!"
}
// 布局管理
def root = new FlowPane(10, 10, label, textField, button, resultLabel)
root.style = "-fx-padding: 20px;"
// 设置场景并显示窗口
stage.scene = new Scene(root)
stage.show()
}
static void main(String[] args) {
launch(args)
}
}
打包运行
-
编译命令:
mvn clean compile -
直接运行:
mvn javafx:run -
打包为原生应用(支持 Windows/ macOS/ Linux):
- 执行命令:
mvn javafx:jlink - 生成目录:
target/image,包含可执行文件和运行时环境 - 运行:进入
target/image/bin,执行groovy-javafx-demo(Linux/macOS)或groovy-javafx-demo.bat(Windows)
- 执行命令:
总结
Groovy 与 Java 生态的集成具备天然兼容的优势,能够让开发者快速上手和享受丝滑的开发过程:Spring Boot 集成可大幅简化业务代码和配置,桌面应用集成则通过闭包简化事件绑定和 UI 编写......无论是后端开发,还是桌面应用开发,Groovy 都能无缝衔接,并且有效降低冗长的 Java 语法,实在是不可多得的利器!