springboot自定义starter

一、应用场景

在实际开发中,经常会定义一些公共组件,提供给各个项目团队使用。而在springboot的项目中,一般会将这些公共组件封装为springboot的starter。

二、以mybatis的starter为例

1、需求:自定义mybatis的starter

2、步骤:

创建 dmybatis-spring-boot-autoconfigure 模块,提供自动配置类,并自定义配置文件META-INF/spring/xxx.imports

注意:springboot2.7以下版本是spring.factories配置文件,springboot3.0以上版本是 .imports配置文件

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

三、实际操作

1、创建两个maven工程

另一个工程同样的配置。 

 

在autoconfig工程下创建config包,创建MyBatisAutoConfig类。添@AutoConfiguration注解表示当前类是一个自动配置类。 

2、在类中进行代码编写

需要完成对SqlSessionFactoryBean和MapperScannerConfigurer的注入

先进行pom.xml文件的配置,添加下面这四个的依赖

<dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter</artifactId>
      <version>3.3.4</version>
    </dependency>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-jdbc</artifactId>
      <version>3.3.4</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>

类中的代码编写

package com.dzu.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();
        //与数据库建立联系,通过datasource,在方法中声明
        sqlSessionFactoryBean.setDataSource(dataSource);
        return sqlSessionFactoryBean;
    }
    //MapperScannerConfigurer
    @Bean
    public MapperScannerConfigurer mapperScannerConfigurer(BeanFactory beanFactory){
        //创建对象
        MapperScannerConfigurer mapperScannerConfigurer = new MapperScannerConfigurer();
        //扫描包:启动类所在的包及其子包
        //在依赖中会提供api进行获取包名,一般只需要获取到第一个即可。
        List<String> packages = AutoConfigurationPackages.get(beanFactory);
        String p = packages.get(0);
        mapperScannerConfigurer.setBasePackage(p);

        //扫描注解:Mapper注解
        mapperScannerConfigurer.setAnnotationClass(Mapper.class);
        return mapperScannerConfigurer;
    }
}

3、在配置文件中声明自动配置文件的全类名

在main目录下创建resources文件夹,进行全类名的设置,目录结构如下图。

注意:为了目录结构的简洁美观,可以把自动创建但没有使用的目录结构删除

 文件名最好不要手写,在maven依赖中找就行。

在 .import配置文件中声明全类名

方法:双击类名,右键单击,选择copy/reference,复制过去即可

4、dmybatis-spring-boot-starter的配置

这个工程的src目录是没有用的,直接删除即可。

只需要在pom.xml文件中导入依赖即可。

ok这样自定义mybatis的starter就完成了。

四、在spring-boot-mybatis工程中测试自定义starter 

有自动提示就是配置成功了。

把原来的依赖注释掉,使用自定义的进行测试。 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值