搭建一个springboot项目并整合其他中间件(更新中)

一、快速构建一个springboot项目

直接前往Spring Initializr进行配置然后导出项目下载

二、配置maven下载依赖

图中红字写错了,是conf/settings,不是config

配置好maven后要把settings.xml中的镜像改为国内的,加快下载速度

xml 复制代码
<mirrors>
	<mirror>
      	<id>CN</id>
      	<name>Aliyun Nexus</name>
      	<url>https://maven.aliyun.com/nexus/content/groups/public</url>
      	<mirrorOf>*</mirrorOf>
  </mirror>

	<mirror>
      <id>aliyunmaven</id>
      <mirrorOf>*</mirrorOf>
      <name>阿里云公共仓库</name>
      <url>https://maven.aliyun.com/repository/public</url>
    </mirror>
</mirrors>

配置完成后重新加载pom.xml中的依赖

三、配置项目jdk并构建启动项目

比较新的springboot对jdk是有要求的,比如springboot3适配的jdk最低版本是17

四、项目启动成功不报错后开始整合其他中间件

(一)、Redis

引入依赖redis用于连接redis,引入依赖jedis用于操作redis,引入依赖fastjson用于在操作redis时将字符产进行序列化和反序列化。 以上这些是我在翻其他博客时其他人的操作,我鼓捣了好一会儿才发现这些都是不必要的,我自己弄demo的话只要成功整合就可以了,starter已经整合好一套默认可操作的模板了。

xml 复制代码
<!-- redis -->
<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>

实际上demo直接引用一个redis的starter就可以,springboot全都整合好了可以直接用来测试。

java 复制代码
@GetMapping("/get/{key}")
public String getRedisString(@PathVariable String key){
    if (key != null){
        Object o = redisTemplate.opsForValue().get(key);
        return String.valueOf(o);
    }
    return "key is null";
}

@PostMapping("/save")
public String saveRedisString(@RequestBody Map<String, String> param){
    String key = param.get("key");
    String value = param.get("value");
    if (key != null && value != null){
        redisTemplate.opsForValue().set(key, value);
        return "ok";
    }
    return "key/value is null";
}

利用postman和redis可视化工具进行测试,到这里说明redis整合成功。

踩坑

测试的时候发现明明有@RequestBody却只能接收到body的json格式数据,没法自动解析成我对应的属性值,如下图。 问了ai后发现两种可能:

  1. 请求头没设置对,正常Content-Type应该是application/json;charset=UTF-8 ;
  2. 没引入jackson,Spring Boot 默认使用 Jackson 来解析 JSON。如果项目中没有引入相关依赖,Spring 无法找到合适的 HttpMessageConverter,就会退化为使用 StringHttpMessageConverter,直接把请求体当作纯文本字符串接收;
  3. 接收参数定义为了String,方法参数直接定义为 String,Spring 会优先匹配 StringHttpMessageConverter,直接将整个 JSON 体作为字符串赋值,而不会尝试解析为对象。(很明显我是这个问题)
xml 复制代码
<!-- 已经包含了JackSon --> 
<dependency> 
    <groupId>org.springframework.boot</groupId> 
    <artifactId>spring-boot-starter-web</artifactId> 
</dependency> 
<!-- 或者显式引入 Jackson --> 
<dependency> 
    <groupId>com.fasterxml.jackson.core</groupId> 
    <artifactId>jackson-databind</artifactId> 
</dependency>
相关推荐
脚本自动化开发10 小时前
存储涨价后,磐镭WO5迷你主机值得买吗
后端
一只爱撸猫的程序猿12 小时前
我看着一个 AI 引擎在 14 天里,从"记忆"走进了"搜索"
人工智能·后端·架构
陈随易15 小时前
纯 Go 写的 JS 引擎,跑分超过了 C 语言的 QuickJS
前端·后端·程序员
卷无止境16 小时前
RAGFlow 项目全景报告:从文档解析引擎到 Agent 原生数据库
后端·python
小Z先生16 小时前
我用 Go + 系统 WebView 写了个纯本地 Postman:不装 Electron、不连云端
后端·github
IT_陈寒17 小时前
Redis连接池泄漏那次,我差点把生产环境搞崩了
前端·人工智能·后端
灿飞屋17 小时前
Kotlin与Java虚拟机三:控制流
android·java·开发语言·后端·python·kotlin·安卓
石小石Orz17 小时前
AI 正在蚕食我们的编码能力
前端·后端·算法
陈随易17 小时前
专注飞机 FocusFlight,两个人把番茄钟做成了一趟航班
前端·后端·程序员
量化分析码农18 小时前
【Python量化波动率实战 04】低波动异象:低波组真的跑赢高波组吗
后端