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

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

先读 00|系列导读 了解全系列顺序。本篇对应仓库文件:pom.xml、src/main/java/com/ekko/gemini/GeminiDemoApplication.java、src/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-plugin。maven-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 及子包,后续 config、controller 放在该包下即可被 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 打出第一轮回复。

相关推荐
ZWZhangYu12 小时前
从 Dify 实践理解大模型上下文缓存
java·后端·spring
考虑考虑13 小时前
瀚高数据库
数据库·后端·postgresql
锋行天下13 小时前
DeepSeek写Langgraph就是个大傻逼,一本正经胡说八道
前端·人工智能·后端
小小张说故事15 小时前
Python 的 str 为什么设计成不可变?拆开字符串驻留、字符串池,以及 += 拼接到底慢在哪
后端·python
AI架构师之家15 小时前
我把 Hermes 这匹"马"养了两周,它干了一件让我有点发毛的事
后端
dpharness16 小时前
块协议用了两周,我把九个坑按顺序记下来了
后端
加宝的起点雷达16 小时前
跑了两周的信号日报,我把降级链改了四次
人工智能·后端
IT枫斗者枫哥16 小时前
CompletableFuture失败后返回空列表:异常没了,业务含义也变了
java·后端
Gopher_HBo16 小时前
opentelemetrySDK源码解析
后端
UrbanJazzerati16 小时前
AutoHotkey v2 零基础快速入门 Part 10:给路线回放添加高精度计时,理解累计延迟与路线一致性
后端