• 重学SpringBoot3-整合SSM


    更多SpringBoot3内容请关注我的专栏:《SpringBoot3》
    期待您的点赞👍收藏⭐评论✍

    Spring Boot 3 整合 SSM(Spring、Spring MVC和MyBatis)进行数据访问,是构建现代 Java Web 应用的常见实践。这种整合利用了 Spring Boot 的自动配置特性,简化了传统 SSM 架构的配置复杂性,同时保留了 SSM 强大的数据访问和业务逻辑处理能力。

    Spring Boot整合SSM示例

    以下是详细的整合流程:

    1. 创建Spring Boot项目

    首先,使用 Spring Initializr(https://start.spring.io/)或你喜欢的 IDE 创建一个新的 Spring Boot 项目。在依赖选择部分,至少需要包含以下模块:

    • Spring Web:用于构建 Web 应用和 RESTful 服务。
    • MyBatis Framework:提供 MyBatis 整合支持。
    • Spring Boot DevTools:提供热加载、自动重启等开发时功能。
    • MySQL Driver:这里使用阿里的数据源,或者你使用的其他数据库驱动。
    • Lombok:避免 Java 对象中的重复定义工作。

    Spring Initializr创建项目

    选择依赖

    2. 配置数据源

    application.propertiesapplication.yml 文件中配置数据库连接。Spring Boot 会自动读取这些配置来创建和配置数据源。

    # 数据源配置
    spring.datasource.url=jdbc:mysql://localhost:3306/dbtest1?useSSL=false&serverTimezone=UTC
    spring.datasource.username=root
    spring.datasource.password=root123
    spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
    
    • 1
    • 2
    • 3
    • 4
    • 5

    确保数据库 URL、用户名和密码等配置正确。

    3. 配置MyBatis

    Spring Boot 会自动配置 MyBatis 的基本设置,但你可能需要进一步配置映射文件的位置或别名处理规则。可以在 application.properties中进行配置:

    # mybatis配置
    mybatis.mapper-locations=classpath:mapper/*.xml
    
    • 1
    • 2

    这里,mybatis.mapper-locations 指定了 MyBatis 的映射文件位置。

    配置文件

    4. 实现数据访问对象(DAO)

    使用 MyBatis 时,你需要创建 Mapper 接口,用于定义数据库操作的方法。例如:

    @Mapper
    public interface UserMapper {
        User selectUserById(Long id);
    }
    
    • 1
    • 2
    • 3
    • 4

    然后,创建对应的 XML 映射文件 UserMapper.xml,定义 SQL 语句和映射规则:

    
    DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
    <mapper namespace="com.coderjia.ssm.dao.UserMapper">
        <select id="selectUserById" resultType="com.coderjia.ssm.bean.User">
            SELECT *
            FROM users
            WHERE id = #{id}
        select>
    mapper>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    5. 编写服务层和控制器

    服务层负责业务逻辑,它会使用前面定义的 Mapper 接口。然后,创建一个控制器来处理 HTTP 请求,调用服务层的方法。

    // service接口
    public interface IUserService {
    
        public User getUserById(Long id);
    }
    
    // service实现类
    @Service
    public class UserServiceImpl implements IUserService {
    
        @Resource
        private UserMapper userMapper;
    
        @Override
        public User getUserById(Long id) {
            return userMapper.selectUserById(id);
        }
    }
    
    @RestController
    @RequestMapping("/users")
    public class UserController {
    
        @Resource
        private IUserService userService;
    
        @GetMapping("/{id}")
        public ResponseEntity<User> getUserById(@PathVariable Long id) {
            User user = userService.getUserById(id);
            return ResponseEntity.ok(user);
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32

    整个项目结构如下:

    项目结构

    6. 运行和测试

    一旦完成上述配置和代码编写,Spring Boot 应用就已经整合了 SSM 进行数据访问。运行 Spring Boot 应用,并测试 API 是否如预期工作,如下测试接口 localhost:8081/users/1 可以获取数据。

    测试接口

    DataSourceAutoConfiguration类

    DataSourceAutoConfiguration 类是 Spring Boot 自动配置机制的一部分,它负责自动配置数据源(DataSource)的设置。这一过程主要基于应用的配置属性( application.properties application.yml 文件中)来完成。DataSourceAutoConfiguration 类使得开发者无需手动配置数据源和数据库连接池,大大简化了Spring Boot 应用中数据访问层(DAO层)的配置工作。

    数据源自动配置类

    主要功能

    DataSourceAutoConfiguration 类的主要功能包括:

    • 自动检测并配置数据源:根据 classpath 中的库和配置文件中的设置,自动选择并配置合适的数据源。例如,如果 classpath 中包含 HikariCP,那么默认会配置为使用 HikariCP 连接池。
    • 配置连接池属性:根据 application.propertiesapplication.yml 文件中的配置,自动设置连接池的各种属性,如最大连接数、最小空闲连接数、连接超时时间等。
    • 支持多种数据库:可以自动配置与多种数据库的连接,包括但不限于 MySQL、PostgreSQL、H2 等。
    • 环境特定配置:支持根据不同的环境(开发、测试、生产)使用不同的数据库配置。

    工作原理

    当 Spring Boot 应用启动时,DataSourceAutoConfiguration 会被自动执行,前提是 classpath 中存在 javax.sql.DataSource 接口,以及相应的数据库驱动。它会根据应用配置文件中的数据源配置属性(如数据库URL、用户名和密码等)来初始化数据源。此过程涉及以下关键属性:

    spring.datasource.url=jdbc:mysql://localhost:3306/mydb
    spring.datasource.username=myuser
    spring.datasource.password=mypassword
    spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
    # 连接池的其他配置...
    
    • 1
    • 2
    • 3
    • 4
    • 5

    自定义和扩展

    虽然 DataSourceAutoConfiguration 提供了大量的默认设置,但 Spring Boot 也允许开发者通过添加自定义配置来覆盖这些默认值,或者完全禁用自动配置,手动定义数据源和数据库连接池。

    如果你需要更复杂的数据源配置,如多数据源支持,你可能需要禁用 DataSourceAutoConfiguration,并通过自定义配置类来手动配置数据源。

    MyBatisAutoConfiguration类

    MyBatisAutoConfiguration 是 Spring Boot 对 MyBatis 框架支持的一部分,负责自动配置 MyBatis 和 Spring Boot 应用的集成。这个自动配置类简化了使用 MyBatis 进行数据访问时的配置工作,使得开发者可以更加轻松地将 MyBatis 集成到 Spring Boot 应用中。

    MyBatis自动配置类

    主要功能

    MyBatisAutoConfiguration 类的主要功能包括:

    • 自动配置 SqlSessionFactory:它创建并配置 SqlSessionFactory 实例,这是 MyBatis 中用于创建 SqlSession 的工厂类。通过 SqlSessionFactory,可以执行 SQL 命令、获取映射器(Mapper)等。
    • 自动配置 SqlSessionTemplate:它配置了 SqlSessionTemplate,这是 SqlSession 的线程安全的实现,用于在 Spring 管理的事务中执行持久化操作。
    • 自动扫描 Mapper 接口:根据配置自动扫描并注册 Mapper 接口,这样就可以在 Spring 应用中自动注入 Mapper 并使用。
    • 集成事务管理:自动配置事务管理器,支持 MyBatis 的事务与 Spring 的事务管理进行集成。

    工作原理

    在 Spring Boot 应用启动过程中,如果检测到 mybatis-spring-boot-autoconfigure 依赖在项目的 classpath 中,MyBatisAutoConfiguration 就会被自动启用。它会根据应用的配置文件(如 application.propertiesapplication.yml)和 classpath 中的资源,如 MyBatis 的配置文件和 Mapper XML 文件,自动配置 MyBatis 的相关组件。

    为了利用 MyBatisAutoConfiguration 提供的自动配置,需要在 Spring Boot 应用中添加 MyBatis Spring Boot Starter 依赖:

    
    <dependency>
        <groupId>org.mybatis.spring.bootgroupId>
        <artifactId>mybatis-spring-boot-starterartifactId>
        <version>版本号version>
    dependency>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    或者,对于 Gradle 项目:

    implementation 'org.mybatis.spring.boot:mybatis-spring-boot-starter:版本号'
    
    • 1

    在配置文件中,可以定义 MyBatis 特定的配置属性,例如:

    # 数据源配置
    spring.datasource.url=jdbc:mysql://localhost:3306/mydb
    spring.datasource.username=myuser
    spring.datasource.password=mypassword
    
    # MyBatis配置
    mybatis.type-aliases-package=com.example.myapp.model
    mybatis.mapper-locations=classpath:mapper/*.xml
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    自定义和扩展

    虽然 MyBatisAutoConfiguration 提供了丰富的自动配置功能,但 Spring Boot 也允许开发者通过自定义配置类覆盖这些默认配置,或者提供额外的配置。例如,可以定义自己的 SqlSessionFactoryBeanDataSource Bean 来覆盖自动配置提供的 Bean,或者添加额外的 MyBatis 插件。

    总结

    Spring Boot 3 整合 SSM 框架进行数据访问的过程,通过减少配置和增加自动化,大大简化了开发流程。这种整合方式使得开发者可以更专注于业务逻辑的实现,同时享受 Spring Boot 和 SSM 各自的优势。

  • 相关阅读:
    Android绘制的Window和View
    【蓝桥杯入门记录】动态数码管例程
    你掌握迭代器和可迭代对象了么?不,你没有!
    Hive3 - 性能优化
    LeetCode 刷题 [C++] 第279题.完全平方数
    AE Saber插件学习笔记
    主成分分析算法流程——python
    笔试强训(三十二)
    简单讲解Android Fragment(三)
    vulnhub靶场之ICA: 1
  • 原文地址:https://blog.csdn.net/u014390502/article/details/136769865