新書推薦:

《
失控的孤独
》
售價:NT$
286.0

《
怀疑:破解天才困惑与凡人焦虑的心理谜题
》
售價:NT$
408.0

《
神圣的异端:法国中世纪纯洁派叙事研究
》
售價:NT$
500.0

《
甲骨文丛书·莫卧儿王朝的灭亡:德里1857年
》
售價:NT$
760.0

《
江南器物志
》
售價:NT$
403.0

《
Go语言高级编程(第2版)
》
售價:NT$
458.0

《
与贝聿铭同行
》
售價:NT$
602.0

《
如何面对爱情里的失望
》
售價:NT$
179.0
|
編輯推薦: |
Spring AI DeepSeek实战指南,快速打造企业级智能应用
三大实战项目 配套示例详细代码,提供商业级AI解决方案
覆盖Spring 和DeepSeek全新特性,解锁AI开发全栈技能
|
內容簡介: |
本书是一本全面覆盖Spring 6框架、大模型技术以及Spring AI应用开发技术的开发指南。全书深入浅出地介绍Spring 6框架的特性和应用实践,深入探讨大模型技术和Spring AI的集成应用,涵盖多模态、RAG、Function Calling、嵌入模型、向量数据库、对话记忆和内容审查等知识。全书按照从理论基础到项目实践的顺序编排,首先阐述Spring的核心原理,如Bean管理、AOP、数据库编程等关键技术,然后详细介绍Web开发,最后延伸到大模型应用开发,以及如何在Spring项目中集成和使用DeepSeek等大模型技术。 本书包含大量示例,每个案例均配有完整的代码和详细的步骤。特别是,本书包含三个大型实战项目,分别涉及智能对话、金融分析和酒店预订的场景,并基于DeepSeeK和ChatGPT实现,为行业智能化转型提供实践参考。本书还介绍Spring 6.x、Spring Boot 3及Spring AI的最新特性,适合前沿技术的开发者参考。
|
關於作者: |
赖帆(CSDN博主“谷哥的小弟”),拥有十余年一线开发经验。历任研发工程师、技术组长、高级开发工程师、技术经理、技术部门主管等职位。曾任职于上市集团研发中心,精通Java、C/C 、Python、SQL、JavaScript、Go等主流开发语言。擅长互联网应用开发与实践;热衷于开源技术,对Spring Boot、Spring Cloud、人工智能、Vue、Flutter等热门技术有着深入的研究。长期以来,坚持在中国专业IT社区CSDN输出优质技术博客。曾于2016年、2020年两度荣获CSDN年度十大博客之星。截至2024年,共创作几百篇优质博文,博客访问量累计达400万。
|
目錄:
|
第1章 Spring框架入门 1
1.1 Spring发展历程 2
1.2 Spring的优势 4
1.3 Spring核心概念 4
1.3.1 Spring容器 4
1.3.2 Bean 5
1.3.3 控制反转 5
1.3.4 依赖注入 5
1.4 Spring体系结构 6
1.4.1 Core Container 6
1.4.2 Data Access/Integration 7
1.4.3 Web 7
1.4.4 AOP与Aspects 7
1.4.5 Test 8
1.4.6 Instrumentation 8
1.4.7 Messaging 8
1.4.8 小结 8
1.5 传统Web开发模式回顾 8
1.5.1 持久层代码 8
1.5.2 业务层代码 9
1.5.3 测试类代码 9
1.5.4 案例小结 10
1.6 Spring入门案例 10
1.6.1 创建项目 10
1.6.2 创建模块 13
1.6.3 添加依赖 15
1.6.4 核心代码 16
1.6.5 案例小结 19
1.7 本章总结 19
第2章 Bean的管理与配置 21
2.1 Spring容器 22
2.1.1 BeanFactory接口 22
2.1.2 ApplicationContext接口 23
2.1.3 获取Bean的常用方法 23
2.2 Bean的实例化 24
2.2.1 构造函数实例化Bean 24
2.2.2 静态工厂实例化Bean 25
2.2.3 实例工厂实例化Bean 27
2.2.4 FactoryBean实例化Bean 28
2.3 Bean的装配概述 30
2.4 基于XML装配Bean 30
2.4.1 常用配置 30
2.4.2 设值注入 33
2.4.3 构造注入 41
2.4.4 自动装配 45
2.5 基于注解装配Bean 49
2.5.1 常用注解 49
2.5.2 组件扫描 55
2.6 基于配置类装配Bean 58
2.6.1 @Configuration注解 58
2.6.2 @ComponentScan注解 58
2.6.3 @PropertySource注解 58
2.6.4 @Bean注解 58
2.6.5 @Import注解 61
2.6.6 @SpringJUnitConfig注解 62
2.7 Bean的生命周期 63
2.8 多线程环境下的作用域 65
2.9 自定义Spring容器 66
2.9.1 定义注解 66
2.9.2 使用注解 67
2.9.3 定义容器 67
2.9.4 实现容器 68
2.9.5 验证测试 71
2.10 本章总结 71
第3章 Spring面向切面编程 72
3.1 面向切面编程特征 73
3.2 代理模式实现策略 73
3.2.1 静态代理 76
3.2.2 基于JDK的动态代理 78
3.2.3 基于CGLIB的动态代理 80
3.3 Spring AOP术语 82
3.3.1 连接点 82
3.3.2 切入点 82
3.3.3 通知 84
3.3.4 切面 84
3.3.5 织入 85
3.4 Spring AOP典型应用 85
3.5 基于XML实现Spring AOP 87
3.6 基于注解实现Spring AOP 92
3.7 本章总结 94
第4章 Spring数据库编程 95
4.1 JdbcTemplate基本操作 96
4.2 JdbcTemplate应用案例 96
4.3 Spring事务管理概述 100
4.3.1 数据库事务主要特征 100
4.3.2 数据库事务基本操作 100
4.3.3 Spring事务管理接口 101
4.3.4 Spring事务管理方式 103
4.4 基于XML配置的声明式事务管理 104
4.4.1 XML配置事务管理主要步骤 104
4.4.2 XML配置事务管理应用案例 106
4.5 基于注解配置的声明式事务管理 111
4.5.1 注解配置事务管理核心注解 111
4.5.2 注解配置事务管理应用案例 112
4.6 Spring事务传播行为 114
4.7 Spring整合MyBatis 117
4.8 本章总结 127
第5章 Spring MVC框架入门 128
5.1 MVC模式 129
5.2 Spring MVC概述 129
5.3 Spring MVC开发入门 130
5.3.1 基于XML配置的Spring MVC入门案例 130
5.3.2 基于注解配置的Spring MVC入门案例 133
5.4 Spring MVC核心组件 136
5.4.1 DispatcherServlet 136
5.4.2 Handler 136
5.4.3 HandlerMapping 137
5.4.4 HandlerAdapter 139
5.4.5 ModelAndView 139
5.4.6 ViewResolver 139
5.4.7 View 140
5.5 Spring MVC工作原理 140
5.6 本章总结 141
第6章 Spring MVC请求映射 142
6.1 @RequestMapping注解 143
6.1.1 value 143
6.1.2 method 144
6.1.3 headers 145
6.1.4 params 145
6.1.5 consumes 145
6.1.6 produces 145
6.2 组合注解 145
6.3 数据绑定 146
6.3.1 绑定请求参数 146
6.3.2 绑定请求体数据 149
6.3.3 绑定请求头数据 150
6.3.4 绑定Cookie数据 150
6.4 编码过滤器 150
6.5 自定义类型转换器 151
6.6 本章总结 153
第7章 Spring MVC请求响应 154
7.1 响应视图 155
7.2 响应数据 155
7.2.1 响应字符串 156
7.2.2 响应JSON数据 156
7.3 统一返回结果 158
7.4 重定向与请求转发 159
7.5 数据共享 160
7.5.1 Request域数据共享 160
7.5.2 Session域数据共享 161
7.5.3 Application域数据共享 162
7.6 本章总结 163
第8章 Spring MVC RESTful编程 164
8.1 REST概述 165
8.2 遵循路径设计原则 165
8.3 请求路径变量 166
8.4 HiddenHttpMethodFilter 166
8.5 RESTful编程开发案例 167
8.5.1 系统接口设计 168
8.5.2 前端页面开发 168
8.5.3 后端控制器开发 169
8.6 本章总结 171
第9章 Spring MVC开发进阶 172
9.1 文件上传 173
9.1.1 配置文件解析器 173
9.1.2 配置文件上传参数 173
9.1.3 构建文件上传页面 174
9.1.4 处理上传文件 174
9.2 文件下载 176
9.3 统一异常处理 177
9.3.1 HandlerExceptionResolver 177
9.3.2 SimpleMappingExceptionResolver 178
9.3.3 自定义异常处理 178
9.3.4 声明式统一异常处理 179
9.3.5 异常分类处理策略 181
9.4 数据校验 182
9.4.1 声明式数据校验概述 183
9.4.2 声明式数据校验应用 184
9.5 访问静态资源 186
9.6 跨资源共享 187
9.6.1 @CrossOrigin注解 187
9.6.2 addCorsMappings方法 188
9.7 Web组件 189
9.7.1 监听器 189
9.7.2 过滤器 191
9.7.3 拦截器 191
9.7.4 小结 193
9.8 本章总结 194
第10章 SSM框架整合 195
10.1 容器关系 196
10.1.1 Root WebApplicationContext 196
10.1.2 Servlet WebApplicationContext 196
10.1.3 容器关系总结 197
10.2 SSM框架整合案例 198
10.2.1 框架整合前期工作 198
10.2.2 Spring框架整合持久层 203
10.2.3 Spring框架整合业务层 208
10.2.4 Spring框架整合表现层 212
10.2.5 应用程序初始化配置 218
10.2.6 项目后端接口测试 219
10.3 本章总结 220
第11章 大模型技术概览 221
11.1 大模型发展历程 222
11.2 大模型的特点 222
11.3 大模型分类 223
11.3.1 按应用领域分类 223
11.3.2 按训练方式分类 224
11.3.3 按功能特性分类 224
11.4 大模型发展现状 225
11.5 大模型基础知识 225
11.5.1 机器学习 225
11.5.2 深度学习 225
11.5.3 神经网络 226
11.5.4 Transformer模型 227
11.6 大模型的构建与部署 229
11.6.1 数据采集 229
11.6.2 数据清洗 229
11.6.3 数据预处理 229
11.6.4 数据标注 230
11.6.5 数据划分 230
11.6.6 模型设计 230
11.6.7 模型初始化 230
11.6.8 模型训练 231
11.6.9 模型验证 231
11.6.10 模型保存 231
11.6.11 模型部署 231
11.7 大模型API服务 232
11.8 本章总结 232
第12章 Spring AI开发入门 233
12.1 Spring AI概述 234
12.2 Spring AI核心概念 235
12.2.1 模型 235
12.2.2 提示词 235
12.2.3 嵌入 235
12.2.4 词元 236
12.2.5 结构化输出 236
12.2.6 数据引入 236
12.2.7 检索增强生成 237
12.2.8 响应评估 237
12.3 Spring AI入门案例 238
12.3.1 创建项目 238
12.3.2 配置API key 240
12.3.3 编写控制器 240
12.3.4 案例小结 240
12.4 本章总结 241
第13章 Spring AI核心技术 242
13.1 ChatModel 243
13.2 ChatClient 244
13.3 Prompt Templates 245
13.4 ChatOptions 246
13.5 Message 247
13.6 流式对话 248
13.7 文生图 248
13.8 文本转语音 249
13.9 语音转文本 250
13.10 本章总结 251
第14章 Spring AI开发进阶 252
14.1 多模态 253
14.2 结构化输出 254
14.3 提示词填充 256
14.4 嵌入模型 258
14.5 向量数据库 259
14.6 函数调用 262
14.7 增强器 265
14.8 对话记忆 267
14.9 内容审查 269
14.10 本章总结 271
第15章 Spring AI项目开发实战 272
15.1 芯有灵犀智能对话系统 273
15.1.1 项目展示 273
15.1.2 技术架构 273
15.1.3 核心功能 274
15.1.4 开发环境 274
15.1.5 项目搭建 274
15.1.6 后端开发 276
15.1.7 前端开发 278
15.1.8 项目小结 280
15.2 企业金融数据分析平台 280
15.2.1 项目展示 280
15.2.2 技术架构 281
15.2.3 核心技术 282
15.2.4 开发环境 282
15.2.5 项目搭建 282
15.2.6 后端开发 284
15.2.7 前端开发 289
15.2.8 项目小结 291
15.3 芯领神会酒店智能助手 291
15.3.1 项目展示 292
15.3.2 技术架构 292
15.3.3 核心技术 293
15.3.4 开发环境 294
15.3.5 项目搭建 294
15.3.6 后端开发 299
15.3.7 前端开发 302
15.3.8 项目小结 304
15.4 本章总结 304
|
內容試閱:
|
困顿中醒悟
时光荏苒,白驹过隙。十五年前,我离开象牙塔踏进社会,在IT行业开启了职业生涯。时隔多年,我依然清晰地记得刚接触软件编程时,遇到了问题就到处找答案,查别人的技术资料,再从文章中复制代码,粘贴在自己的项目里,试探着解决问题。这种不停地四处搜索代码借以解决技术问题的状态持续了很久。在这个过程中,我的进步微乎其微,而且遇到类似的问题依然不清楚该怎么解决,于是只能再次去找代码、复制、粘贴、运行……如此循环。
在那段日子里,我开始有些麻木了,甚至心安理得地认为:写代码原本就是这样的,大家也都是这样做的。后来慢慢意识到:我这是在为自己开脱。其实,在我心底隐蔽的角落早已充满了懒惰和浮躁,遇到问题,不想自己动手,寄希望于检索到一段代码或者现成的例子,不在乎过程,只求一个结果。
直到有一天,赶在截止日期之前火急火燎地提交完最后一行代码后,我瘫坐在椅子上如释重负。我开始反思:这就是我的工作么?我要这样继续下去么?我该怎么改变呢?对于这些问题,我都没有答案。郁闷之时,我无意间听到了CSDN创始人蒋涛的演讲。涛哥在演讲中鼓励年轻人积累技术,突破自我。他充满力量的话语犹如夜空的闪电,警醒了困惑中的我,也让我拥有了改变现状的勇气。遇到问题不可怕,我们不能总是一味逃避,而应该直面它们。不但要解决问题,还需要进一步地梳理、分析、总结和记录,为以后类似的情况提供参考。我开始在CSDN撰写技术博客,记录在学习和工作中遇到的技术难题及其解决方案。
蜗牛的脚印
白天在公司工作,晚上和周末就成了我学习的时间。每当学会了新的技术,解决了难题,我都会把经验整理成一篇CSDN博客。坦率地说,在习惯的养成过程中,懒惰的惯性时常作祟,差一点儿前功尽弃。可是,每当想偷懒时,我总是提醒和敲打自己:世上没有捷径,不走弯路就不错了;自己不是聪明人,就不要装聪明,好记性不如烂笔头;自己笨,就要多花点儿精力用在学习上。在自我督促下,我渐渐坚持了下来。每当有人留言“谢谢你,谷哥的小弟,你的文章帮到了我”时,我内心的成就感就油然而生。原来,能帮助别人是一件很幸福的事情,也正是这些正向的反馈激励着我去挑战难度更大的项目。
2017年左右,我的主要工作是对接国内的手机厂商。由于合作伙伴对谷歌Android系统进行了深度定制,在系统集成的过程中,我遇到了前所未有的阻力:系统兼容性的问题一直困扰着我,压得我喘不过气来。为了尽快解决问题,我翻阅了大量技术资料。从博客园到CSDN,从Stack Overflow到掘金,从GitHub到Gitee,我搜罗了大量文章,却沮丧地发现这些文章的内容大同小异:只是举一个简单的例子,很少研究为什么;人云亦云,对于文章里的技术根本没有去验证和深究;或者避重就轻地展示简单的样例而绕过了难点;文章零零散散不成体系……每次看完这些文章我依然觉得稀里糊涂、晕头转向,原本满满的动力和勇气也消失殆尽了。
在反复的搜索之后,我的愿望依旧落空了,没有人给我准备好我需要的东西。当我想鼓励自己再查找时,我猛地想起前辈说过的那句话:每当你在感叹,如果有这样一个东西就好了时,请注意,其实这是你的机会。此时,我禁不住反问自己:你怎么总是在期待别人把东西准备好呈现在你面前呢?自己动手去实现它难道不是最好的学习过程么?想到这里,我的心里也不再惶恐,打算自己啃下这块硬骨头。每天下班后吃完饭,稍微休息,我就开始读源码、看资料、写代码、画流程图、写博客,一头扎进去钻研,两耳不闻窗外事。最终,经过几个月的努力,我打破桎梏,解决了系统性的复杂难题,并将相关技术以专栏的形式发布在CSDN上。
在那段时间里,有同事问我:看源码枯燥么,累么?其实,我也想去三里屯的酒吧喝酒,我也想去成都的街头走走。可是,不行。因为我深知,我的技术储备还不够,我的能力还很有限,我还没有放松的资格。IT人是靠技术吃饭的,技术是需要积累和锤炼的,如果怕麻烦就会一直遇到麻烦,怕吃苦就会一直吃苦。软件编程的实践性很强,想偷懒不动手是难有作为的。所以,我要一直在路上。但行前路,无问西东。
于是,我继续按照原定的方式前进。在痛苦中收获,在收获中成长,不念过往,不畏将来。走着,走着,花就开了,清风徐来。工作变得从容起来,博客的读者越来越多,我也很荣幸在2016年和2020年两度荣获“CSDN年度十大博客之星”称号。
工作十余年,我换了几家公司,也从事了几种不同的岗位,但是对于博客的写作,从未停止。有人问我:“谷哥的小弟,你怎么还在坚持写博客?”其实,我已经不用坚持了,因为写技术博客已经成为我生活的一部分,像吃饭、睡觉一样自然。每当做完一天的繁重工作,有的人会玩游戏,有的人会夜跑,有的人会读书,有的人会小酌几杯,而我选择写几行代码或者一篇博客,以此平复疲惫的内心。此时的我,也是最真实的,真实就是力量。这股力量支撑着我笔耕不辍,坚持原创;这股力量鞭策着我在写作过程中尽全力做到案例全面、内容翔实、图文并茂,行文风趣幽默、严谨细致、通俗易懂;这股力量驱动着我走进未曾涉及的领域,大数据、人工智能、机器学习、边缘计算、智能物联网、辅助驾驶……在这些陌生的领域,我就像刚上学的小朋友,兴奋又谨慎,当然,最高兴的还是又学会了新的知识。在学习的过程中,我依旧遵循自己的三板斧——读理论、做实验、写博客,把学会的知识以博客的形式分享给需要的人。
其实,我们都是社会中的普通人,都是大自然里的小蜗牛。做技术的这些年,我渐渐地明白:成长的意义在于变得越来越好。正如周杰伦在歌里唱的那样:“我要一步一步往上爬,等待阳光静静看着它的脸,小小的天有大大的梦想,重重的壳裹着轻轻的仰望。”
挥笔著青简
自从开通CSDN博客以来,我一共撰写了1500余篇原创博客,收获了420万阅读量。在与读者的交流过程中,有不少人曾经建议我把博客文章整理成书。对于这个建议,我既欣慰又倍感压力。承蒙读者的厚爱和陪伴,我才走到了今天,可是,原本的工作和生活已经占据了我绝大部分时间,面对写书这件事我深感分身乏术。直到去年,一位小伙伴私信我:我要是早点儿看到你的这篇文章就好了,就可以少走很多弯路了。看到这句话,我终于下定决心把博客文章付梓 成书。
最近这几年,AI技术的发展速度远超过人们的预想,它深刻地改变了我们的学习、生活和工作方式。我一直在思考:在AI革命席卷企业级应用的背景下,开发者如何在保持技术栈稳定性的同时实现智能化跃迁?因此,我决定撰写一本关于人工智能技术的图书,帮助开发者基于现有框架构建并完善AI能力矩阵。
历经二十多年的发展,Spring构建了完善的开发生态,并成为企业级应用的技术底座。随着人工智能技术的迅猛发展,Spring推出Spring AI子项目,将AI功能集成到应用程序中。作为Spring家族的新成员,Spring AI充分依托Spring的模块化设计,通过统一接口实现了与大模型、图像生成模型、语音合成与识别模型的交互。通过Spring AI,开发者可以轻松地实现文本生成、对话系统、图像生成、语音处理等功能,而无须深入了解底层模型的实现细节。
本书适用于希望系统学习Spring和AI开发的技术人员阅读。书中内容涵盖Spring基础知识、核心概念及其体系结构,同时介绍了Spring AI的基本应用和高阶技能,涵盖多模态、RAG、Function Calling、嵌入模型、向量数据库、对话记忆和内容审查等。全书按照从理论基础到项目实践的顺序编排,首先阐述了Spring的核心原理,然后详细介绍Web开发,最后延伸到大模型应用开发,帮助读者循序渐进地掌握相关技术。
本书包含大量案例,每个案例均配有完整的代码和详细的步骤,建议读者在阅读过程中结合书中内容进行实践。本书包含三个大型实战项目,分别涉及智能对话、金融分析和酒店预订的场景,为行业智能化转型提供了实践参考。本书还介绍了Spring 6.x、Spring Boot 3及Spring AI的最新特性,适合关注前沿技术的开发者参考。本书内容全面、结构清晰、案例丰富,既适合初学者入门,也可帮助有经验的工程师实现技术升级和工程能力跃迁。
在本书的写作伊始,我以为凭借自己十余年的博客写作经验写一本技术图书是没有任何难度的,甚至可以信手拈来。等到了下笔时,我才发现写书和写博客有不小的差别。作为一本书,它应该是系统的、严谨的、全面的,这与博客的随性而发、率性而为很不同。与此同时,为了避免内容晦涩难懂,我还得考虑语言的简捷性与实用性。在创作过程中,字句的凝练非常重要,有时简单的几句文稿我也会斟酌半天,总怕词不达意,耽误读者的时间。每当此时,我便想起何光远的《鉴戒录·贾忤旨》中记录唐朝诗人贾岛有关推敲的典故。古代的大诗人尚且如此严谨,我们又岂能草草应付了事?为此,我每写完一个章节就请身边的实习生阅读,然后根据他们的反馈来修订内容和表述方式。
感恩与致谢
在研究技术的道路上,我遇到了很多令人尊敬的前辈和志同道合的朋友,谢谢你们给予我的关怀与指导,谢谢你们的支持、鼓励与陪伴。在此,向各位表达诚挚的谢意(排名不分先后):ZXX、Emily、Dora、张DW、彭J、W建L、ycgvbst、光华哥、灯泡哥、朱YAN、齐L、李新、张HB、余江、胡晓东、上官、小爱、郭霖、皓哥、康师傅、叶涛、胡争辉、开发游戏的老王、温暖了四季、td、老朱、小雨、Fred、岚枫、铁胖纸、帐前卒、流川枫、牧之、光礼、杭州哲、尼古拉斯赵四、老群主兆贤、Fizz、Stay、小傅哥、尚斌、梦鸽、佳威、锋武、蒋涛、宋海涛、车东、邹欣、红月、王艳、小婷、英雄哪里出来、花姐、杨睿楠、王晨力、道映霖、梦想橡皮擦、老袁、敖丙三太子、1_bit、邓凡平、许向武、杨秀璋、红孩儿、Paulus、喵叔。
感谢本书的技术评审和参与各个章节试读的小伙伴,谢谢你们的建议与帮助。
感谢电子工业出版社博文视点的宋亚东编辑为本书的顺利出版倾注的大量心血,感谢您的辛勤付出。
在本书的撰写过程中,我虽然秉承科学严谨的态度,力求表述准确、完善,但由于水平有限,本书错误和疏漏之处在所难免,恳请各位读者批评指正。
|
|