You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Spring Boot项目中同时使用Java与Groovy?

在Spring Boot中同时使用Java和Groovy的实现方案

你完全可以在Spring Boot项目中同时使用Java和Groovy,实现像Grails那样的无缝兼容,只需要调整项目的构建配置和目录结构即可。以下是针对Maven和Gradle两种主流构建工具的具体步骤:

一、基础项目准备

不管你用Spring Initializr初始选择的是Java还是Groovy项目,后续都可以添加对另一种语言的支持。建议先选择Java作为初始语言,后续添加Groovy支持,操作更直观。

二、Maven项目配置

1. 添加Groovy依赖

在pom.xml的<dependencies>块中添加Groovy核心依赖:

<dependency>
    <groupId>org.codehaus.groovy</groupId>
    <artifactId>groovy</artifactId>
</dependency>

Spring Boot的父依赖已经管理了Groovy的版本,无需手动指定版本号。

2. 配置多语言编译插件

修改<build>块中的编译插件,使用Groovy Eclipse编译器同时处理Java和Groovy文件:

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.11.0</version>
            <configuration>
                <compilerId>groovy-eclipse-compiler</compilerId>
                <source>17</source> <!-- 替换为你的JDK版本 -->
                <target>17</target>
            </configuration>
            <dependencies>
                <dependency>
                    <groupId>org.codehaus.groovy</groupId>
                    <artifactId>groovy-eclipse-compiler</artifactId>
                    <version>3.9.0-01</version>
                </dependency>
                <dependency>
                    <groupId>org.codehaus.groovy</groupId>
                    <artifactId>groovy-eclipse-batch</artifactId>
                    <version>3.0.17-01</version>
                </dependency>
            </dependencies>
        </plugin>
    </plugins>
</build>

该配置会让Groovy编译器处理src/main/java和src/main/groovy下的所有源码,利用Groovy作为Java超集的特性,实现两种语言代码的互相调用。

三、Gradle项目配置

Gradle对多语言编译的支持更原生,步骤更简单:

1. 确保Groovy插件已启用

在build.gradle的plugins块中同时添加java和groovy插件:

plugins {
    id 'java'
    id 'groovy'
    id 'org.springframework.boot' version '3.2.0'
    id 'io.spring.dependency-management' version '1.1.4'
}

2. 添加Groovy依赖

在dependencies块中添加Groovy核心依赖:

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter'
    implementation 'org.codehaus.groovy:groovy'
    // 测试依赖可选
    testImplementation 'org.springframework.boot:spring-boot-starter-test'
    testImplementation 'org.codehaus.groovy:groovy-test'
}

Gradle会自动识别src/main/groovy和src/main/java目录,无需额外配置编译规则,Groovy编译器会自动处理两种语言的文件。

四、项目目录结构

创建对应的源码目录,确保Java和Groovy代码处于同一包路径下,方便互相访问:

src/
├── main/
│   ├── java/
│   │   └── com/example/demo/
│   │       └── JavaService.java
│   └── groovy/
│       └── com/example/demo/
│           └── GroovyService.groovy
└── test/
    ├── java/
    └── groovy/

五、代码示例(无缝调用)

Java类示例

package com.example.demo;

import org.springframework.stereotype.Service;

@Service
public class JavaService {
    public String getJavaMessage() {
        return "Hello from Java!";
    }
}

Groovy类示例(调用Java类)

package com.example.demo

import org.springframework.stereotype.Service

@Service
class GroovyService {
    private final JavaService javaService

    // Groovy自动生成构造函数,支持Spring依赖注入
    GroovyService(JavaService javaService) {
        this.javaService = javaService
    }

    String getCombinedMessage() {
        "${javaService.getJavaMessage()} + Hello from Groovy!"
    }
}

测试调用

在Spring Boot主类中添加测试逻辑:

package com.example.demo;

import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;

@SpringBootApplication
public class DemoApplication {

    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }

    @Bean
    CommandLineRunner run(GroovyService groovyService) {
        return args -> System.out.println(groovyService.getCombinedMessage());
    }
}

运行项目后,控制台会输出:Hello from Java! + Hello from Groovy!,证明两种语言代码已实现无缝兼容调用。

注意事项

  • 确保JDK版本与Groovy版本兼容:比如Spring Boot 3.x要求JDK 17+,需搭配Groovy 4.x版本;
  • 两种语言的代码遵循各自的语法规范即可,Groovy会自动兼容Java语法,Java也能直接调用Groovy类(Groovy类默认是public的)。

内容的提问来源于stack exchange,提问作者John Little

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 15:17:28