Spring Boot 4.0 与 MyBatis Plus 整合完整指南

Spring Boot 4.0 与 Spring Cloud Alibaba 2025 整合完整指南

Spring Cloud全栈实战:手撸企业级项目,从入门到架构师!

概述 本文将详细介绍如何在 Spring Boot 4.0 中整合 Spring Cloud Alibaba 2025

最新版本。Spring Cloud Alibaba 为分布式应用开发提供了一站式解决方案,包含服务发现、配置管理、流量控制等核心功能。

Spring Cloud全栈实战:手撸企业级项目,从入门到架构师!

环境要求

JDK: 21+ (Spring Boot 4.0 要求)

Maven: 3.6+ 或 Gradle 7.x+

Spring Boot: 4.0.1

Mybatis Plus: 3.5.14

Spring Cloud全栈实战:手撸企业级项目,从入门到架构师!

1、创建项目并配置依赖

1.使用 Spring Initializr 创建项目

访问 start.spring.io创建基础项目,选择:

Spring Boot: 4.0.0

打包方式: Maven/Gradle

Java: 21

2.完整 pom.xml 配置

java 复制代码
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
 
    <groupId>com.cloud.xx</groupId>
    <artifactId>xx-cloud</artifactId>
    <version>1.0-SNAPSHOT</version>
 
    <properties>
        <maven.compiler.source>17</maven.compiler.source>
        <maven.compiler.target>17</maven.compiler.target>
        <mybatis-plus.version>3.4.3</mybatis-plus.version>
        <mysql.connector.version>8.0.16</mysql.connector.version>
        <hutool-all.version>5.8.18</hutool-all.version>
    </properties>
 
 <!--spring-boot  4.0.1-SNAPSHOT  目前最新-->
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>4.0.1-SNAPSHOT</version>
    </parent>
 
    <dependencies>
 
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
 
<!--knife4j 在线接口文档-->
        <dependency>
            <groupId>com.github.xiaoymin</groupId>
            <artifactId>knife4j-openapi3-jakarta-spring-boot-starter</artifactId>
            <version>4.5.0</version>
        </dependency>
 
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-lang3</artifactId>
        </dependency>
 
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-configuration-processor</artifactId>
            <optional>true</optional>
        </dependency>
 
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>
 
 
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>3.1.0</version>
            <scope>provided</scope>
        </dependency>
 
 
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-validation</artifactId>
        </dependency>
 
        <dependency>
            <groupId>com.dtflys.forest</groupId>
            <artifactId>forest-spring-boot3-starter</artifactId>
            <version>1.5.35</version>
        </dependency>
 
        <dependency>
            <groupId>cn.hutool</groupId>
            <artifactId>hutool-all</artifactId>
            <version>${hutool-all.version}</version>
        </dependency>
 
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-spring-boot4-starter</artifactId>
            <version>3.5.14</version>
        </dependency>
 
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>${mysql.connector.version}</version>
        </dependency>
 
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.79</version>
        </dependency>
 
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.22</version>
        </dependency>
 
 
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
 
        <!-- 或者使用PostgreSQL兼容驱动 -->
        <!-- https://mvnrepository.com/artifact/org.postgresql/postgresql -->
        <dependency>
            <groupId>org.postgresql</groupId>
            <artifactId>postgresql</artifactId>
            <version>42.7.8</version>
        </dependency>
 
    </dependencies>
 
    <build>
        <finalName>cloud-boot-jiabo</finalName>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <includeSystemScope>true</includeSystemScope>
                </configuration>
            </plugin>
        </plugins>
 
    </build>
 
    <repositories>
        <repository>
            <id>spring-snapshots</id>
            <url>https://repo.spring.io/snapshot</url>
            <snapshots><enabled>true</enabled></snapshots>
        </repository>
        <repository>
            <id>spring-milestones</id>
            <url>https://repo.spring.io/milestone</url>
        </repository>
    </repositories>
    <pluginRepositories>
        <pluginRepository>
            <id>spring-snapshots</id>
            <url>https://repo.spring.io/snapshot</url>
        </pluginRepository>
        <pluginRepository>
            <id>spring-milestones</id>
            <url>https://repo.spring.io/milestone</url>
        </pluginRepository>
    </pluginRepositories>
 
</project>

2、第二步:配置文件

1. bootstrap.yml (应用启动配置)

yaml 复制代码
server:
  port: 10002
  compression:
    enabled: true
    mime-types: text/html,text/xml,text/plain,text/css,text/javascript,application/javascript,application/json
    min-response-size: 1024
  http2:
    enabled: true
  undertow:
    threads:
      io: 8
      worker: 256
    accesslog:
      dir: logs
      enabled: true
      pattern: common
      prefix: access_log
      suffix: log
    max-http-post-size: 0
    buffer-size: 1024
    direct-buffers: true
# prod_joolun_eastchinafair
spring:
  datasource:
    driver-class-name: org.postgresql.Driver
    username: root
    password: sY111111(
    url: jdbc:postgresql://localhost:5432/certificate
 
  jackson:
    date-format: yyyy-MM-dd HH:mm:ss
    time-zone: Asia/Shanghai
    default-property-inclusion: non_null
 
 
  threads:
    virtual:
      enabled: true
pool:
  core-pool-size: 100
  maximum-pool-size: 200
  keep-alive-time: 10

 
 
# springdoc-openapi项目配置
springdoc:
  swagger-ui:
    #自定义swagger前端请求路径,输入http:localhost:8080/swagger-ui会自动重定向到swagger页面
    path: /swagger-ui
    tags-sorter: alpha
    operations-sorter: alpha
  api-docs:
    path: /v3/api-docs  #swagger后端请求地址
    enabled: true   #是否开启文档功能
  group-configs: #分组配置,可配置多个分组
    - group: 'default'             #分组名称
      paths-to-match: '/**'        #配置需要匹配的路径
      packages-to-scan: com.cms    #配置要扫描包的路径,一般配置到启动类所在的包名
    - group: 'admin-api'
      paths-to-match: '/**'
      packages-to-scan: com.cms
 
 
 
#mybatis-plus:
#  configuration:
#    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl #开启sql日志
 
#  configuration:
#    log-impl: org.apache.ibatis.logging.nologging.NoLoggingImpl #关闭sql日志
#    shrink-whitespaces-in-sql: true
2.2 application.yml (应用配置)
server:
  port: 8081
  servlet:
    context-path: /demo
spring:
  main:
    allow-bean-definition-overriding: true
  mvc:
    throw-exception-if-no-handler-found: true
  web:
    resources:
      add-mappings: false
management:
  endpoints:
    web:
      exposure:
        include: health,info,metrics
  endpoint:
    health:
      show-details: always
feign:
  sentinel:
    enabled: true
  client:
    config:
      default:
        connect-timeout: 5000
        read-timeout: 5000
        logger-level: basic
logging:
  level:
    com.example: debug
    com.alibaba.nacos: warn

3、主应用类

java 复制代码
package com.cloud.xx
 
import org.mybatis.spring.annotation.MapperScan
import org.springframework.boot.SpringApplication
import org.springframework.boot.autoconfigure.SpringBootApplication
import org.springframework.scheduling.annotation.EnableScheduling
 
 
@MapperScan(Array("com.cloud.xx.mapper"))
@EnableScheduling
@SpringBootApplication
class ApplicationBoot
 
object ApplicationBoot extends App {
  SpringApplication.run(classOf[ApplicationBoot], args: _*)
}

4、创建服务接口

1. Cotroller 服务接口

java 复制代码
package com.cloud.xx.controller
 
import com.cloud.xx.common.utils.R
import com.cloud.xx.mapper.UserMapper
import io.swagger.v3.oas.annotations.Operation
import io.swagger.v3.oas.annotations.tags.Tag
import org.springframework.beans.factory.annotation.Autowired
import org.springframework.web.bind.annotation.{GetMapping, RequestMapping, RequestParam, RestController}
 
import scala.collection.convert.ImplicitConversions.`collection AsScalaIterable`
 
@Tag(name = "用户信息", description = "用户相关接口")
@RestController
@RequestMapping(Array("/user"))
class UserController {
 
  @Autowired
  val etsEntityService: UserMapper = null
 
  /**
   * 测试Vabase海量数据库FT项目对接
   *
   * @param id
   * @return
   */
  @Operation(summary = "测试问好", description = "测试问好")
  @GetMapping(Array("getInfo")) def ok(@RequestParam("id") id: String): R[_] = {
    import scala.jdk.CollectionConverters._
 
    val entity = etsEntityService.selectList(null)
    val list = entity.map { num =>
      num.setUserName(num.getUserName + "1")
      num
    }
    R.ok(list.asJava) // 现在是 List[UserEntity],序列化正常
  }
}

Spring Cloud全栈实战:手撸企业级项目,从入门到架构师!

2. 创建Mapper客户端接口

java 复制代码
package com.cloud.xx.mapper
 
import com.baomidou.mybatisplus.core.mapper.BaseMapper
import com.cloud.xx.entity.UserEntity
import org.apache.ibatis.annotations.Mapper
 
 
@Mapper
trait UserMapper extends BaseMapper[UserEntity]{
 
}

3. 创建Service类

java 复制代码
package com.cloud.xx.service
 
import com.baomidou.mybatisplus.extension.service.IService
import com.cloud.xx.entity.UserEntity
 
trait UserService extends IService[UserEntity] {
 
}

4. 创建Service Impl 的实现类

java 复制代码
package com.cloud.xx.service.impl
 
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
import com.cloud.xx.entity.UserEntity
import com.cloud.xx.mapper.UserMapper
import com.cloud.xx.service.UserService
import org.springframework.stereotype.Service
 
@Service
class UserServiceImpl extends ServiceImpl[UserMapper, UserEntity] with UserService {
 
}

Spring Cloud全栈实战:手撸企业级项目,从入门到架构师!

5、全局异常处理

java 复制代码
package com.example.config;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;
import java.util.HashMap;
import java.util.Map;
@RestControllerAdvice
public class GlobalExceptionHandler {
    
    @ExceptionHandler(Exception.class)
    public Map<String, Object> handleException(Exception e) {
        Map<String, Object> result = new HashMap<>();
        result.put("code", 500);
        result.put("message", "系统异常: " + e.getMessage());
        return result;
    }
}

6、Docker 部署配置

1. Dockerfile

powershell 复制代码
FROM openjdk:21-jdk-slim
# 设置工作目录
WORKDIR /app
# 复制JAR文件
COPY xx-cloud.jar app.jar
# 暴露端口
EXPOSE 8080
# 设置JVM参数
ENV JAVA_OPTS="-Xmx512m -Xms256m -Djava.security.egd=file:/dev/./urandom"

Spring Cloud全栈实战:手撸企业级项目,从入门到架构师!

7、启动应用

ENTRYPOINT ["sh", "-c", "java $JAVA_OPTS -jar app.jar"] 本文详细介绍了 Spring

Boot 4.0 与 MybatisPlus 最新版本的完整整合方案,包括:

项目搭建和依赖配置

  1. MybatisPlus 依赖
  2. MybatisPlus 配置
  3. SpringBoot4.0整合Mysql
  4. SpringBoot4.0的搭建
  5. 高级配置和最佳实践
  6. Docker 容器化部署

通过这套完整的SpringBoot4.0解决方案,您可以快速构建高可用、可扩展的分布式应用系统。记得根据实际生产环境需求调整配置参数和安全设置。

Spring Cloud全栈实战:手撸企业级项目,从入门到架构师!

相关推荐
一 乐1 小时前
数码商城系统|电子|基于SprinBoot+vue的数码商城系统(源码+数据库+文档)
java·前端·javascript·数据库·vue.js·springboot
番茄Salad1 小时前
Spring Boot项目,修改项目名称,修改包名!
java·spring boot·后端
疯狂的程序猴1 小时前
Fiddler调试工具全面解析 HTTPHTTPS抓包、代理设置与接口测试实战教程
后端
古城小栈1 小时前
Spring Boot 4.0 深度解析:云原生时代的Java开发新标杆
java·spring boot·云原生
Dxxyyyy1 小时前
零基础学JAVA--Day40(坦克大战)
java·开发语言
极市平台1 小时前
骁龙大赛技术分享第4期来了
人工智能·经验分享·笔记·后端·个人开发
郑州光合科技余经理1 小时前
PHP技术栈:上门系统海外版开发与源码解析
java·开发语言·javascript·git·uni-app·php·uniapp
汤姆Tom1 小时前
前端转战后端:JavaScript 与 Java 对照学习指南(第三篇 —— Map 对象)
java·javascript·全栈
( •̀∀•́ )9201 小时前
高性能拖拽排序
java·开发语言·算法