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 打出第一轮回复。

相关推荐
SamDeepThinking1 小时前
DDD领域驱动设计三年落地实战-开篇词
后端·程序员·架构
DeepNoMind2 小时前
从入门到 Offer:系统设计面试的完整备考路线
后端
阿丰资源2 小时前
基于Springboot+mysql的在线兼职平台(附源码)
spring boot·后端·mysql
小村儿3 小时前
连载
前端·后端·ai编程
Honmaple3 小时前
FFF:面向人类与 AI 代理的极速文件搜索工具包
后端
Java面试题总结3 小时前
spring重点详解
java·后端·spring
北冥有羽Victoria4 小时前
Django中间件实战:FBV/CBV日志全兼容
数据库·vscode·后端·python·django·sqlite·开源
Kiyra4 小时前
异步任务不用 Kafka 也行:用 Redis Stream 搭一套轻量级 Producer/Consumer 框架
数据库·人工智能·redis·分布式·后端·缓存·kafka
进阶的猿猴4 小时前
Rsa简单实现接口到期限制(springBoot)
java·spring boot·后端