告别 Python!Java 本地部署 Qwen 3.5 实战,Ollama + Spring Boot 保姆级教程
文章目录前言一、Java 程序员的Python 霸凌我们受够了二、Ollama大模型界的应用商店2.1 安装 Ollama比装 QQ 还简单2.2 硬件要求别被吓退8G 显存也能玩三、召唤 Qwen 3.5让阿里大厨进厨房3.1 拉取模型一键召唤3.2 本地测试先尝后买四、Spring Boot 3.x 集成Java 程序员的春天4.1 项目初始化选对战车4.2 Maven 配置引入弹药库4.3 YAML 配置打通任督二脉五、代码实战5 行代码跑通对话5.1 极简版直接注入 ChatClient5.2 进阶版带历史记忆的对话六、性能调优让 Qwen 3.5 跑得更欢6.1 量化模型显存不够精度来凑6.2 上下文长度别让 AI 失忆6.3 流式输出告别转圈圈七、避坑指南我踩过的雷你别踩坑 1Ollama 默认只能本地访问坑 2中文乱码坑 3内存泄漏坑 4模型下载卡住八、写在最后Java 的 AI 时代真的来了无意间发现了一个CSDN大神的人工智能教程忍不住分享一下给大家。很通俗易懂重点是还非常风趣幽默像看小说一样。床送门放这了 http://blog.csdn.net/jiangjunshow前言本文手把手教你在 Windows/Linux 上通过 Ollama 本地部署阿里 Qwen 3.5 大模型并用 Spring Boot 3.x Spring AI 1.1.0 搭建 Java 后端服务。无需 Python 环境5 行代码实现 AI 对话附完整 Maven 依赖、YAML 配置和可运行的 Controller 代码显存 8GB 就能跑 9B 参数模型。一、Java 程序员的Python 霸凌我们受够了说实话这年头做 Java 开发真的有点憋屈。每次想玩点 AI 大模型网上一搜教程清一色的 Pythonpip install 这、conda env 那好像不会 Python 就不配搞 AI 似的。我就纳闷了咱们 Java 生态圈养了这么多年的 Spring Boot难道就只能在旁边看着 Python 吃香的喝辣的更离谱的是很多公司为了跑个本地大模型非要单独部署一套 Python 微服务然后让 Java 后端通过 HTTP 调来调去。这就好比你在家里想吃碗面条非要点外卖让骑手从隔壁厨房端过来——明明灶台上就有锅干嘛不自己煮好消息是2025 年开始局面彻底变了。阿里发布的 Qwen 3.5 系列模型在中文理解能力上直接屠榜而 Ollama 这个模型外卖平台让本地部署变得比安装微信还简单。再加上 Spring AI 1.1.0 的强势更新Java 开发者终于可以挺直腰杆说不用 Python我们也能玩转大模型二、Ollama大模型界的应用商店打个比方如果大模型是各种菜系的大厨那 Ollama 就是高端人才市场。你不需要亲自去猎头配置 Python 环境、不用装修厨房安装 CUDA、不用给大厨发工资购买 API Key只需要敲一行命令就能让 Qwen 3.5 这个满汉全席级大厨来你家本地电脑上班。2.1 安装 Ollama比装 QQ 还简单不管你用 Windows、Mac 还是 LinuxOllama 的安装都堪称无脑Windows 用户直接访问 ollama.com下载 .exe 文件双击运行一路下一步。安装完成后右下角会出现一个羊驼图标右键点击选择Open Web UI就能验证是否成功。Linux 用户Ubuntu/CentOS打开终端复制粘贴这行命令回车curl-fsSLhttps://ollama.com/install.sh|sh装好后执行systemctl status ollama看到绿色的active (running)就说明大厨已经到岗。验证安装ollama--version如果显示类似ollama version 0.6.0的版本号恭喜你地基已经打好。2.2 硬件要求别被吓退8G 显存也能玩很多人一听本地部署大模型就想到四路 RTX 4090其实 Qwen 3.5 这次发了很多个尺寸从手机能跑的 0.8B 到服务器级的 397B 都有。对于咱们 Java 开发者做测试或者中小型企业应用9B 版本是甜点选择显存需求8GB 就能流畅跑量化版响应速度RTX 3060 级别显卡首 token 延迟不到 1 秒中文能力写作、代码、推理都不输 GPT-4 初版如果你只有核显或者老笔记本也可以试试 4B 版本虽然聪明程度差了点但写个 CRUD 代码、解释个算法还是没问题。三、召唤 Qwen 3.5让阿里大厨进厨房Ollama 装好后下载模型就是一句话的事比 Docker pull 镜像还快。3.1 拉取模型一键召唤打开终端Windows 就是 CMD 或 PowerShell输入ollama pull qwen3.5:9b这时候 Ollama 会从仓库下载模型权重大概 6GB 左右网速快的话十分钟搞定。下载过程中你可以去泡杯咖啡进度条走完后你的电脑里就住着一个精通中文的 AI 大脑了。如果你想试试更小更快的版本可以换ollama pull qwen3.5:4b# 适合轻薄本ollama pull qwen3.5:35b# 需要 24G 显存性能怪兽3.2 本地测试先尝后买下载完成后先别急着写代码在终端里直接对话试试ollama run qwen3.5:9b你会看到光标等待输入这时候打个招呼你好请用 Java 写个单例模式要带线程安全的那种如果 Qwen 3.5 立刻给你吐出一段完美的双重检查锁代码还附带注释解释 volatile 关键字的作用那就说明一切正常。按CtrlD退出对话模式。重点来了Ollama 默认会开启一个 REST API 服务地址是http://localhost:11434而且神奇的是它兼容 OpenAI 的接口格式这意味着什么意味着你不需要学新的 API 规范直接用 OpenAI 的客户端都能连上简直是降维打击。四、Spring Boot 3.x 集成Java 程序员的春天好了大厨已经就位现在该 Java 出场当服务员了。我们要用 Spring AI 这个翻译官让 Java 代码能和 Qwen 3.5 顺畅交流。4.1 项目初始化选对战车打开 Spring Initializrstart.spring.io选择Project: MavenSpring Boot: 3.3.x必须 3.x因为 Spring AI 需要 Jakarta EE 命名空间Java: 17 或 21Dependencies: Spring Web、Spring AI如果你习惯命令行也可以spring init--dependenciesai,web my-qwen-app4.2 Maven 配置引入弹药库Spring AI 目前最新稳定版是 1.1.0-M32025 年 10 月发布虽然带 M 字样但亲测生产环境稳如老狗。在pom.xml里加入 BOM 管理org.springframework.ai spring-ai-bom 1.1.0-M3 pom import org.springframework.ai spring-ai-ollama-spring-boot-starter org.springframework.ai spring-ai-openai-spring-boot-starter注意这里我们同时引入了 Ollama 和 OpenAI 的 starter后者是为了用它的 POJO 类毕竟接口格式兼容不用白不用。4.3 YAML 配置打通任督二脉在application.yml里写上这几行Spring AI 就能自动识别你本地的 Ollamaspring:ai:ollama:base-url:http://localhost:11434chat:model:qwen3.5:9boptions:temperature:0.7num-predict:2048chat:client:enabled:true这里temperature相当于大厨的创意程度0.7 是平衡点想让它更严谨就调低想更发散就调高。num-predict是最大生成 token 数防止话痨。五、代码实战5 行代码跑通对话配置搞定现在写 Java 代码简单到离谱。5.1 极简版直接注入 ChatClientRestControllerRequestMapping(/ai)publicclassChatController{privatefinalChatClientchatClient;publicChatController(ChatClient.BuilderchatClientBuilder){this.chatClientchatClientBuilder.build();}GetMapping(/ask)publicStringask(RequestParamStringquestion){returnchatClient.prompt().user(question).call().content();}}就这几行一个 REST API 就搭好了。启动项目浏览器访问http://localhost:8080/ai/ask?question用Java写个快速排序并解释时间复杂度你会看到 Qwen 3.5 返回的 Markdown 格式代码和详细解释延迟也就几百毫秒。5.2 进阶版带历史记忆的对话上面那个版本每次对话都是失忆状态如果你想做上下文连续聊天得加个记忆功能ServicepublicclassChatService{privatefinalChatClientchatClient;// 用 Map 模拟用户会话缓存生产环境建议换 RedisprivatefinalMapsessionStorenewConcurrentHashMap();publicChatService(ChatClient.BuilderchatClientBuilder){this.chatClientchatClientBuilder.build();}publicStringchat(StringsessionId,StringuserInput){// 获取或创建历史记录ListhistorysessionStore.computeIfAbsent(sessionId,k-newArrayList());// 添加用户消息history.add(newUserMessage(userInput));// 调用模型StringresponsechatClient.prompt().messages(history).call().content();// 添加 AI 回复到历史history.add(newAssistantMessage(response));// 防止上下文过长保留最近 10 轮if(history.size()20){historyhistory.subList(history.size()-20,history.size());sessionStore.put(sessionId,history);}returnresponse;}}对应的 ControllerRestControllerRequestMapping(/chat)publicclassConversationController{AutowiredprivateChatServicechatService;PostMapping(/talk)publicStringtalk(RequestBodyChatRequestrequest){returnchatService.chat(request.getSessionId(),request.getMessage());}}DataclassChatRequest{privateStringsessionId;privateStringmessage;}这样你就可以用 Postman 测试连续对话了第一轮问我叫张三第二轮问我刚才说了什么它能准确回答出来。六、性能调优让 Qwen 3.5 跑得更欢本地部署最大的焦虑就是我的显卡够不够用。别慌Ollama 提供了丰富的参数让你做取舍。6.1 量化模型显存不够精度来凑如果你只有 6GB 显存跑 9B 模型可能会爆。这时候可以换个量化版本ollama pull qwen3.5:9b-q4_K_Mq4_K_M表示 4-bit 量化模型体积从 6GB 压缩到 4GB 左右虽然智商会下降 5%但速度提升明显而且省出来的显存可以塞更长的上下文。6.2 上下文长度别让 AI 失忆Qwen 3.5 官方支持 256K 上下文但默认 Ollama 可能只开 2K。在 Java 代码里可以动态调整ChatResponseresponsechatClient.prompt().user(longText).options(OllamaOptions.builder().withNumCtx(16384)// 开启 16K 上下文.withTemperature(0.8).build()).call().chatResponse();注意上下文越长显存占用越高16K 大概需要多占 2-3GB 显存自己权衡。6.3 流式输出告别转圈圈大模型生成文字是个逐字蹦的过程如果你等它全部写完再返回用户会以为卡死了。改成流式输出SSE体验好很多GetMapping(value/stream,producesMediaType.TEXT_EVENT_STREAM_VALUE)publicFluxstreamAsk(RequestParamStringquestion){returnchatClient.prompt().user(question).stream().content();}前端配合 EventSource 就能实现打字机效果跟 ChatGPT 网页版一样丝滑。七、避坑指南我踩过的雷你别踩虽然整套方案已经很成熟但总有几个小坑会让你 debugging 到半夜。坑 1Ollama 默认只能本地访问如果你在服务器上部署发现其他机器调不通 11434 端口那是因为 Ollama 默认绑定 127.0.0.1。需要设置环境变量exportOLLAMA_HOST0.0.0.0:11434Windows 用户在系统环境变量里加就行。坑 2中文乱码如果返回的中文显示为问号检查application.yml加上server:servlet:encoding:charset:UTF-8enabled:trueforce:true坑 3内存泄漏长时间运行后如果 Java 进程内存暴涨可能是没有正确关闭响应流。确保使用 try-with-resources 或者正确管理 ChatClient 的生命周期。坑 4模型下载卡住ollama pull时如果进度条不动大概率是网络问题。可以配置镜像加速或者在路由器上开启科学上网。八、写在最后Java 的 AI 时代真的来了写到这里其实挺感慨的。几年前我们还在争论Java 适合做 AI 吗现在 Spring AI Ollama 的组合已经让这件事变得比写个 CRUD 还简单。Qwen 3.5 在中文场景下的表现确实惊艳写代码能比肩 GPT-4写文案甚至更有人味儿。最关键的是这一切都在你本地的机器上运行数据不用上传到别人的服务器深夜加班调代码也不用怕按 token 收费收到天价账单。所以别再让 Python 成为你的心理阴影了。打开 IDEA新建一个 Spring Boot 项目半小时后你就能拥有一个属于自己的 AI 助手。这感觉就像是在自家后院搭了个五星级厨房想吃什么自己说了算。

相关新闻

【Git】有关git工具的正确使用指南(系统性/结构化)

【Git】有关git工具的正确使用指南(系统性/结构化)

文章目录Git 正确使用指南:系统性结构化总结一、核心概念二、安装与配置1. 安装2. 基础配置三、基本工作流程(本地仓库)1. 初始化/克隆仓库2. 查看状态与差异3. 暂存与提交4. 查看提交历史5. 撤销操作四、分支管理1. 基本分支操作2. 合并分支…

2026/7/3 18:10:14 阅读更多 →
2026职场铁律:AI用得好,收入往上跑;不用AI,收入往下掉

2026职场铁律:AI用得好,收入往上跑;不用AI,收入往下掉

2026职场铁律:AI技能从“加分项”变为“基本项”刷到一条抖音,心里咯噔一下: “2026职场铁律:AI用得好,收入往上跑;不用AI,收入往下掉。” 评论里一片焦虑——这不再是一句玩笑,而是…

2026/7/2 20:56:03 阅读更多 →
【少儿编程】C++初级内容汇总

【少儿编程】C++初级内容汇总

1、开发环境安装 虽然从事编程多年,一直有个疑问,少儿编程使用的什么开发环境?接触了一段时间后,发现很多培训机构都是使用 Dev-C++,Dev-C++5.11不需要联网,独立安装只需342M空间。 Dev-C++安装步骤参见《【C++】Dev-C++安装步骤(V5.11和V6.3)》 C++信奥没有使用Dev…

2026/7/2 19:15:35 阅读更多 →

最新新闻

如何用Xournal++免费打造你的终极数字笔记本?跨平台手写笔记软件完整指南

如何用Xournal++免费打造你的终极数字笔记本?跨平台手写笔记软件完整指南

如何用Xournal免费打造你的终极数字笔记本?跨平台手写笔记软件完整指南 【免费下载链接】xournalpp Xournal is a handwriting notetaking software with PDF annotation support. Written in C with GTK3, supporting Linux (e.g. Ubuntu, Debian, Arch, SUSE), ma…

2026/7/3 19:08:54 阅读更多 →
MC6470与PIC18F24J50的6DOF传感器系统开发指南

MC6470与PIC18F24J50的6DOF传感器系统开发指南

1. MC6470与PIC18F24J50的硬件组合解析MC6470是一款6自由度(6DOF)惯性测量单元(IMU),集成了三轴加速度计和三轴磁力计。这款MEMS传感器采用MEMSIC独有的热对流技术,相比传统电容式MEMS具有更高的可靠性和抗冲击能力。其典型参数包括:加速度计…

2026/7/3 19:06:54 阅读更多 →
如何快速上手BiSheng JDK 17?Linux平台安装与配置完整指南

如何快速上手BiSheng JDK 17?Linux平台安装与配置完整指南

如何快速上手BiSheng JDK 17?Linux平台安装与配置完整指南 【免费下载链接】bishengjdk-17 BiSheng JDK 17 is a high-performance, production-ready distribution of OpenJDK 17. 项目地址: https://gitcode.com/openeuler/bishengjdk-17 前往项目官网免费…

2026/7/3 19:04:52 阅读更多 →
猫抓浏览器插件:你的终极网页资源嗅探与下载解决方案

猫抓浏览器插件:你的终极网页资源嗅探与下载解决方案

猫抓浏览器插件:你的终极网页资源嗅探与下载解决方案 【免费下载链接】cat-catch 猫抓 浏览器资源嗅探扩展 / cat-catch Browser Resource Sniffing Extension 项目地址: https://gitcode.com/GitHub_Trending/ca/cat-catch 在数字内容无处不在的今天&#x…

2026/7/3 19:00:51 阅读更多 →
从数据分布角度理解:为什么不同任务要用不同的损失函数?

从数据分布角度理解:为什么不同任务要用不同的损失函数?

从数据分布角度理解:为什么不同任务要用不同的损失函数? 一、先说清楚:损失函数到底是什么? 在机器学习里,我们可以先把模型想象成一个“会猜答案的机器”。 给它一个输入,比如一张图片、一段文字、一个学生的学习时长,它会输出一个预测结果。 比如: 输入:学习时间…

2026/7/3 18:58:50 阅读更多 →
三重降压转换方案在嵌入式系统中的应用与优化

三重降压转换方案在嵌入式系统中的应用与优化

1. 为什么需要三重降压转换方案在嵌入式系统和工业控制领域,多电压轨供电已经成为标配需求。以典型的ARM Cortex-M4应用为例,核心处理器需要1.2V供电,外设接口需要3.3V,而模拟电路部分则可能需要1.8V。传统方案采用多个独立DC-DC转…

2026/7/3 18:58:50 阅读更多 →

日新闻

Nginx防御TLS重协商攻击实战:从原理到配置与监控

Nginx防御TLS重协商攻击实战:从原理到配置与监控

1. 项目概述:为什么TLS重协商攻击至今仍需警惕十多年前的CVE-2011-1473,一个关于TLS/SSL协议重协商机制的漏洞,现在提起来还有必要吗?很多运维和开发朋友可能会觉得,这都老掉牙了,现代服务器和客户端不都默…

2026/7/3 0:03:59 阅读更多 →
华为防火墙双通道远程管理实战:Web与SSH配置详解

华为防火墙双通道远程管理实战:Web与SSH配置详解

1. 项目概述:为什么需要双通道远程管理防火墙?在任何一个稍具规模的企业网络里,防火墙都是那个默默守护在边界的关键角色。作为网络工程师,我们不可能每次都跑到机房,插上console线去配置它。远程管理能力,…

2026/7/3 0:03:59 阅读更多 →
AD74413R与PIC18F65K40的高精度工业数据采集方案

AD74413R与PIC18F65K40的高精度工业数据采集方案

1. 项目概述:AD74413R与PIC18F65K40的协同工作在工业自动化和精密测量领域,同时实现高精度模数转换(ADC)和数模转换(DAC)功能是许多复杂系统的核心需求。AD74413R作为一款四通道可配置模拟输入/输出器件,与PIC18F65K40微控制器的组合&#xf…

2026/7/3 0:05:59 阅读更多 →

周新闻

月新闻