搭建一个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>
相关推荐
Json____36 分钟前
从零构建家政服务平台:一套全栈架构如何打通管理端与移动端-java-springboot
java·spring boot·后端·架构·毕设·wwwoop.com
leeyi1 小时前
命令行里的平台:df_cli 都会什么(第108篇)
后端·aigc·agent
云雀衔光1 小时前
Java Spring AI MCP:在 Spring 里把 AI 接上你的业务系统
java·开发语言·人工智能·后端·测试工具·spring
苏渡苇1 小时前
Spring Insight 里如何对 Span 进行清洗
java·spring boot·后端·spring·系统监控
Moment1 小时前
为什么市面上的 coding agent 大多数都基于Nodejs?
前端·后端·面试
大模型搬砖人2 小时前
8. 向量化:用 Python 构建你的第一个向量库
后端
小卿噢2 小时前
两个线程改互不相关的变量,性能掉了 7 倍
后端
程序员清风2 小时前
为什么不推荐走Agent开发?
java·后端·面试
Rain的Java大神之路3 小时前
高并发场景下MySQL数据库性能优化实战
java·后端·mysql
明月_清风3 小时前
分治、贪心、回溯、动态规划:四种经典算法思想
后端·算法