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

相关推荐
llz_1121 小时前
web-第二次课后作业
前端·后端·web
红尘散仙7 小时前
我把终端小说阅读器接上了 AI Agent:TRNovel 现在能用 skill 生成书源了
人工智能·后端·rust
卷毛的技术笔记9 小时前
告别硬编码!Spring AI Alibaba 实现 AI Agent 智能工具调用(Tool Calling)
java·人工智能·后端·python·spring·ai编程
会编程的土豆9 小时前
Go 语言反射(Reflection)详解
开发语言·后端·golang
喵个咪9 小时前
GoWind Toolkit Go后端代码生成 完整全流程实战
后端·go·orm
basketball61610 小时前
Go 语言从入门到进阶:4. 数组和MAP使用方法总结
开发语言·后端·golang
qq_25183645710 小时前
SpringBoot+Vue 共享电池柜管理系统 完整实现 前后端分离项目实战 完整代码
vue.js·spring boot·后端
zhangxingchao10 小时前
AI 大模型核心六:量化、Workflow 与 Agent、多轮 RAG
前端·人工智能·后端
IT_陈寒11 小时前
Vite打包时遇到的坑,原来问题出在这里
前端·人工智能·后端
ayqy贾杰12 小时前
基层管理的三板斧,在AI时代行不通了
前端·后端·团队管理