当前位置: 首页 > news >正文

springboot学习(自定义starter)

前言

为什么要学习自定义starter?

  1. 满足实际开发的需要

怎么自定义 starter

1 首先我们可以参考以下别人自定义的starter: mybatis 起步依赖

如下图所示,我在springboot 项目的pom文件,引入mybatis 起步依赖,可以发现在外部库可以看到两个模块:1 自动配置模块 2 自定义starter 模块

功能

两者关系:往往是在starter模块中引入自动配置模块


demo(案例)

需求:自定义 mybatis的starter

自动配置模块

步骤
创建dbmybatis-spring-boot-autoconfigure模块,提供自动配置功能,并自定义配置文件META-INF/spring/xxx.imports

具体步骤

0 创建 一个空的项目 选择添加模块,分别命名为 自动配置模块,starter模块

1 模仿 mybatis 起步依赖 ,添加我们需要的以些依赖

  • 可以发现,除了我标示的,其他的依赖都需要向 我们自定义的自动配置模块 pom文件添加

代码

<dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter</artifactId>
      <version>3.4.3</version>
    </dependency>
    <dependency>
      <groupId> org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-jdbc</artifactId>
      <version>3.4.3</version>
    </dependency>
    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis</artifactId>
      <version>3.5.14</version>
    </dependency>
    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis-spring</artifactId>
      <version>3.0.3</version>
    </dependency>

2 写一个自动配置类

样图

代码:

package com.it.heima.config;

import org.apache.ibatis.annotations.Mapper;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.mapper.MapperScannerConfigurer;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.boot.autoconfigure.AutoConfiguration;
import org.springframework.boot.autoconfigure.AutoConfigurationPackages;
import org.springframework.context.annotation.Bean;

import javax.sql.DataSource;
import java.util.List;

@AutoConfiguration
public class MybatisAutoConfig {
    // SqlSessionFactoryBean
    @Bean
    public SqlSessionFactoryBean sqlSessionFactoryBean(DataSource dataSource){
        SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();
        sqlSessionFactoryBean.setDataSource(dataSource);
        return sqlSessionFactoryBean;
    }
    //MapperScannerConfigurer
    @Bean
    public MapperScannerConfigurer mapperScannerConfigurer(BeanFactory beanFactory){
        MapperScannerConfigurer mapperScannerConfigurer = new MapperScannerConfigurer();
        // 指定扫描的包
        List<String> packages = AutoConfigurationPackages.get(beanFactory);
        String s = packages.get(0);
        mapperScannerConfigurer.setBasePackage(s);
        // 扫描的注解
        mapperScannerConfigurer.setAnnotationClass(Mapper.class);
        return mapperScannerConfigurer;
    }
}

3 向 resources文件夹添加.import 配置文件【存储 自动配置类的全类名】

格式如下图所示:


starter模块

步骤

创建 dmybatis-spring-boot-starter模块,在starter中引入自动配置模块

1 向 starter 模块的pom文件中,引入刚刚写的自动配置模块 和自动配置模块需要的以些依赖

代码:

<dependencies>
    <dependency>
      <groupId>com.it.heima</groupId>
      <artifactId>dbmybatis-spring-boot-autoconfigration</artifactId>
      <version>1.0-SNAPSHOT</version>
    </dependency>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter</artifactId>
      <version>3.4.3</version>
    </dependency>
    <dependency>
      <groupId> org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-jdbc</artifactId>
      <version>3.4.3</version>
    </dependency>
    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis</artifactId>
      <version>3.5.14</version>
    </dependency>
    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis-spring</artifactId>
      <version>3.0.3</version>
    </dependency>
 <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
  </dependencies>

完成之后当我们引入 starter 模块时,就相当于我们平时使用的mybatis起步依赖

创建第三个模块作为 springboot项目:在创建时,引入 springWeb 依赖【作为与前端进行交互】

demo(案例):springboot整合mybatis

目的:通过浏览器,通过输入查询参数,查询user 表的信息

项目准备

1 tb_user 数据表 和User 实体类

  • tb_user 数据表

  • User 实体类

2 pom 文件添加 之前准备好的starter 模块

   <dependency>
            <groupId>com.it.heima</groupId>
            <artifactId>dbmybatis-spring-boot-starter</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>

3 yml 配置文件书写 连接数据库的信息


正文

项目结构


mapper 持久层

  • UserMapper

controller控制层

  • UserController 

service 逻辑处理层

UserService 接口- User findById(Integer userId);方法

impl-接口的实现子包-UserServiceImpl.java

启动类:SpringMybatisApplication 类

运行截图

浏览器访问 数据库

相关文章:

  • GO语言的GC(垃圾回收)原理
  • 探索可变参数提升不变学习以增强分布外泛化能力
  • Android ARouter的详细使用指南
  • 京东云DeepSeek-R1模型一键部署教程,基于智算GCS【成本2元】
  • Ansible 如何使用 Playbook 批量部署应用?
  • Unity WebGL项目访问时自动全屏
  • vue 加密解密
  • 基于PMU的14节点、30节点电力系统状态估计MATLAB程序
  • AndroidStudio下载安装,环境部署以及常见问题解决教程(亲测)
  • 游戏立项时期随笔记录(1)
  • MySql数据库(表数据的增、删、改操作)8
  • mysql5.x和mysql8.x查看和设置隔离级别
  • VSCode C/C++ 环境搭建指南
  • JS逆向案例-通达OA Office Anywhere 2019 的前端密码加密逆向分析
  • SiC/GaN器件测试新选择:MHO5000如何破解高频开关噪声难题?
  • 【MySQL】第十八弹---数据库管理基础:视图操作与用户权限管理指南
  • 2025“钉耙编程”中国大学生算法设计春季联赛(2)题解
  • 第二章:GPT的发展史
  • 2025最新版Windows通过GoLand远程连接Linux构建Go项目保姆级教学
  • 自然语言处理|让AI更聪明:如何用百科知识喂饱语言模型
  • 中方敦促美国停止将溯源问题政治化
  • 在“三只手”上跳舞:公共政策的科学与艺术——读《市场、国家和民众:公共政策经济学》
  • 新城市志|GDP万亿城市,一季度如何挑大梁
  • 上海交大曾小勤:科技传播不应停留于知识搬运,要做科学思维的播种机
  • 一图看懂|印巴交火后,双方基地受损多少?
  • “85后”贵阳市政府驻重庆办事处主任吴育材拟任新职