自定义starter
用途
实际开发中,经常会定义一些公共组件,提供给各个项目团队使用。而在springboot
的项目中,一般会将这些公共组件封装为SpringBoot
的starter
。
****-autoconfigure
提供自动配置功能
****-starter
提供依赖管理功能
我们会在 -starter
中引入 -autoconfigure
功能,这样在引入 -starter
就可以了,就相当于把 -autoconfigure
也引入进来了
实践:自定义 mybatis
的 starter
-
创建
dmybatis-spring-boot-autoconfigure
模块,提供自动配置功能,并自定义配置文件META-INF/spring/xxx.imports
-
创建
dmybatis-spring-boot-starter
模块,在starter
模块中引入自动配置模块
@AutoConfiguration//表示当前类是一个自动配置类
public class MybatisAutoConfig {
//SqlSessionFactoryBean
@Bean
public SqlSessionFactoryBean sqlSessionFactoryBean(DataSource dataSource){
SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();
sqlSessionFactoryBean.setDataSource(dataSource);
return sqlSessionFactoryBean;
}
//MapperScannerConfigure
@Bean
public MapperScannerConfigurer mapperScannerConfigurer(BeanFactory beanFactory){
MapperScannerConfigurer mapperScannerConfigurer = new MapperScannerConfigurer();
//扫描的包:启动类所在的包及其子包
List<String> packages = AutoConfigurationPackages.get(beanFactory);
String p = packages.get(0);
mapperScannerConfigurer.setBasePackage(p);
//扫描的注解:mapper注解
mapperScannerConfigurer.setAnnotationClass(Mapper.class);
return mapperScannerConfigurer;
}
}
com.htu.config.MybatisAutoConfig
<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.htu</groupId>
<artifactId>DMybatis-Spring-Boot_Starter</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>
<name>DMybatis-Spring-Boot_Starter</name>
<url>http://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<!-- !!!!!-->
<dependency>
<groupId>com.htu</groupId>
<artifactId>DMybatis-Spring-Boot-AutoConfigre</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
<version>3.1.2</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
<version>3.0.0</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.13</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>3.0.0</version>
</dependency>
<!-- !!!!!!!!!-->
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<version>RELEASE</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>
总结
自定义 starter
就是自定义启动依赖,方便了项目的开发,自定义starter
与引入jar
包应该有异曲同工之妙