一、快速构建一个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后发现两种可能:
- 请求头没设置对,正常Content-Type应该是application/json;charset=UTF-8 ;
- 没引入jackson,Spring Boot 默认使用 Jackson 来解析 JSON。如果项目中没有引入相关依赖,Spring 无法找到合适的
HttpMessageConverter,就会退化为使用StringHttpMessageConverter,直接把请求体当作纯文本字符串接收; - 接收参数定义为了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>