01|搭建 gemini-demo:Spring Boot 3 + LangChain4j + Gemini

本篇完成 gemini-demo 工程骨架:Spring Boot 3.5、Java 17、LangChain4j 与 Gemini 相关依赖、启动类与基础配置。本篇不调用大模型;第 02 篇在 AiConfig 里接 Gemini。

先读 00|系列导读 了解全系列顺序。本篇对应仓库文件:pom.xmlsrc/main/java/com/ekko/gemini/GeminiDemoApplication.javasrc/main/resources/application.properties

环境

要求
JDK 17
Maven 3.9+(仓库根目录有 mvnw
IDE IntelliJ IDEA / Eclipse 均可

步骤 1:拉仓库或新建工程

跟系列做:克隆作者仓库,在根目录执行 git clone <仓库地址>

从零新建:用 Spring Initializr 选 Maven、Java 17、Spring Boot 3.5.x,依赖勾选 Spring Web;包名 com.ekko.gemini,项目名 gemini-demo。生成后把下文 pom 与目录补全。

根目录建议结构:

text 复制代码
gemini-demo/
├── pom.xml
├── mvnw
├── mvnw.cmd
├── src/main/java/com/ekko/gemini/
├── src/main/resources/
└── src/test/java/com/ekko/gemini/

步骤 2:配置 pom.xml

pom.xml 固定 Java 17、LangChain4j 1.13,并引入本系列依赖。核心片段如下(版本与仓库保持一致):

xml 复制代码
<parent>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-parent</artifactId>
  <version>3.5.10</version>
  <relativePath/>
</parent>

<properties>
  <java.version>17</java.version>
  <langchain4j.version>1.13.0</langchain4j.version>
</properties>

<dependencies>
  <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter</artifactId>
  </dependency>
  <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
  </dependency>
  <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-test</artifactId>
    <scope>test</scope>
  </dependency>

  <dependency>
    <groupId>dev.langchain4j</groupId>
    <artifactId>langchain4j</artifactId>
    <version>${langchain4j.version}</version>
  </dependency>
  <dependency>
    <groupId>dev.langchain4j</groupId>
    <artifactId>langchain4j-google-ai-gemini</artifactId>
    <version>${langchain4j.version}</version>
  </dependency>
  <dependency>
    <groupId>dev.langchain4j</groupId>
    <artifactId>langchain4j-open-ai</artifactId>
    <version>1.13.0</version>
  </dependency>
  <dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <optional>true</optional>
  </dependency>
  <dependency>
    <groupId>dev.langchain4j</groupId>
    <artifactId>langchain4j-document-parser-apache-tika</artifactId>
    <version>1.13.0-beta23</version>
  </dependency>
  <dependency>
    <groupId>dev.langchain4j</groupId>
    <artifactId>langchain4j-cohere</artifactId>
    <version>1.13.0-beta23</version>
  </dependency>
</dependencies>

依赖用途简述:

依赖 用途
spring-boot-starter-web 后续 ChatController 等 HTTP 接口
langchain4j 核心 API(AiServices、RAG 等)
langchain4j-google-ai-gemini Gemini 对话与 Embedding
langchain4j-open-ai 与 OpenAI 兼容用法(本仓库保留,可按需删)
langchain4j-document-parser-apache-tika 第 14 篇多格式文档解析
langchain4j-cohere 第 15 篇 Rerank

build 里保留 spring-boot-maven-pluginmaven-surefire-plugin 见步骤 5。

步骤 3:启动类

src/main/java/com/ekko/gemini/GeminiDemoApplication.java

java 复制代码
package com.ekko.gemini;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class GeminiDemoApplication {

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

@SpringBootApplication 会扫描 com.ekko.gemini 及子包,后续 configcontroller 放在该包下即可被 Spring 管理。

步骤 4:application.properties

src/main/resources/application.properties 先只写应用名:

properties 复制代码
spring.application.name=gemini-demo

Gemini API Key 在第 02 篇配置。建议用环境变量或本地文件,不要提交到 Git:

properties 复制代码
# 第 02 篇起使用,示例:
# google.ai.api-key=${GOOGLE_AI_API_KEY}

本地可建 application-local.properties(勿提交),并在 .gitignore 增加一行:

text 复制代码
application-local.properties

终端示例(按你本机 shell 调整):

bash 复制代码
export GOOGLE_AI_API_KEY=你的密钥

步骤 5:Surefire 与上下文测试

仓库默认在 pom.xml 里配置了 skipTests=true,日常 mvn package 会跳过测试。跟系列从第 02 篇跑单测时,二选一:

方式 A(推荐) :删掉 skipTests 配置,或改为 false

方式 B:命令行临时执行:

bash 复制代码
./mvnw -DskipTests=false -Dtest=GeminiModelChatTest_01 test

src/test/java/com/ekko/gemini/GeminiDemoApplicationTests.java 用于确认 Spring 上下文能加载:

java 复制代码
package com.ekko.gemini;

import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;

@SpringBootTest
class GeminiDemoApplicationTests {

  @Test
  void contextLoads() {
  }
}

若仓库里已有 AiConfig 等完整 Bean,跑 contextLoads 可能要求已配置 API Key;本篇验收以 编译 为准,上下文测试可在第 02 篇配好 Key 后再跑。

验收

在仓库根目录执行:

bash 复制代码
./mvnw -q -DskipTests compile

退出码为 0 即表示 JDK、依赖与主代码编译通过。

可选:在 IDE 运行 GeminiDemoApplication。若此时已存在未配 Key 的 AiConfig,启动可能失败,属正常;第 02 篇补模型配置后再启动。

常见问题

mvnw 无执行权限

bash 复制代码
chmod +x mvnw

依赖下载慢

配置 Maven 镜像,或检查公司代理。

langchain4j 与 Spring Boot 版本对不上

langchain4j.version 与文章一致(1.13.0),Spring Boot 用 3.5.x;勿混用 Spring Boot 2.x。

跟仓库对不上

以作者仓库 pom.xml 为准;本篇只保证骨架与依赖,业务类在后续篇章逐篇加入。

下一篇

02|第一次调用 Gemini:从模型 Bean 到单轮对话 --- 在 config/AiConfig.java 注册 GoogleAiGeminiChatModel,用 GeminiModelChatTest_01#test 打出第一轮回复。

相关推荐
尚早立志几秒前
六)Spring Boot 源码研读之prepareContext 准备上下文
java·spring boot·后端·spring
Dovis(誓平步青云)1 小时前
《Linux CPU频率为何忽高忽低:cpufreq、idle状态与性能抖动教程》
linux·运维·服务器·spring boot·后端·生成对抗网络
To_OC8 小时前
手写 AI 编程 Agent 的命令执行工具:我被 child_process 坑出来的实战经验
后端·node.js·agent
逝水无殇11 小时前
C# 异常处理详解
开发语言·后端·c#
考虑考虑13 小时前
Sentinel安装
java·后端·微服务
IT_陈寒13 小时前
SpringBoot自动配置失灵?你可能忘了这个关键注解
前端·人工智能·后端
碎碎念_49213 小时前
SpringBoot + Vue 前后端分离从 0 到 1 完整环境配置流程
vue.js·spring boot·后端
逝水无殇13 小时前
C# 文件的输入与输出详解
开发语言·数据库·后端·c#
YIAN14 小时前
从手写 Agent 工具到 MCP 协议:一文搞懂大模型跨进程跨语言工具调用
后端·agent·mcp
小兔崽子去哪了14 小时前
Docker 删除镜像后磁盘空间没有释放?
后端·docker·容器