在实际开发中,经常会定义一些公共组件,提供给各个项目团队使用。而在SpringBoot的项目中,一般会将这些公共组件封装为SpringBoot 的 starter。
需求:自定义mybatis的starter
1,创建 dmybatis-spring-boot-autoconfigure 模块,提供自动配置功能,并自定义配置文件 META-INF/spring/xxx.imports
2,创建 dmybatis-spring-boot-starter 模块,在starter中引入自动配置模块
- package com.jinhei.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
- // JDBC连接池提供了 DataSource
- @Bean
- public SqlSessionFactoryBean sqlSessionFactoryBean(DataSource dataSource){
- // 创建SqlSessionFactoryBean对象,会话对象,用于链接数据库
- SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();
- sqlSessionFactoryBean.setDataSource(dataSource);
- // sqlSessionFactoryBean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:mapper/*.xml"));
- return sqlSessionFactoryBean;
- }
-
- // MapperScannerConfigurer
- // 扫描mapper接口
- @Bean
- public MapperScannerConfigurer mapperScannerConfigurer(BeanFactory beanFactory){
- MapperScannerConfigurer mapperScannerConfigurer = new MapperScannerConfigurer();
- // 扫描的包:启动类所在的包及其子包
- List<String> packages = AutoConfigurationPackages.get(beanFactory);
- // 启动类包名只有一个,所以只取第一个
- String p = packages.getFirst();
- // 表示扫描启动类对应的包及其子包下的所有接口
- mapperScannerConfigurer.setBasePackage(p);
- // 扫描的注解
- mapperScannerConfigurer.setAnnotationClass(Mapper.class);
- return mapperScannerConfigurer;
- }
-
- }
复制代码
dmybatis.zip
(64.84 KB, 下载次数: 0, 售价: 50 金币)
|