一:综述:
本节将针对上节总增加的immortal-maqiao-core-mybatis 模块进行封装,最终封装成starter组件。
二:详细过程:
由于网上对springboot原理已经有很详细的源码级别的解析,这里不进行描述,只描述经过哪些步骤可以实现对immortal-maqiao-core-mybatis的starter封装。
1>创建模块immortal-maqiao-core-starter-db,创建完成后如下图:
2>对应的POM文件,其中版本在之前的文章中创建的immortal-maqiao-depencies模块管理,模块对应pom文件如下:
immortal-maqiao-core-starter-db POM文件:
<?xml version="1.0" encoding="UTF-8"?>
<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">
<parent>
<artifactId>immortal-maqiao-core</artifactId>
<groupId>immortal-maqiao</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>immortal-maqiao-core-starter-db</artifactId>
<dependencies>
<dependency>
<groupId>immortal.maqiao</groupId>
<artifactId>immortal-maqiao-core-common</artifactId>
</dependency>
<!--Mybatis-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-extension</artifactId>
</dependency>
<!-- Druid -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
</dependency>
<!-- MySql -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency>
<groupId>immortal-maqiao</groupId>
<artifactId>immortal-maqiao-core-mybatis</artifactId>
</dependency>
<dependency>
<groupId>jakarta.servlet</groupId>
<artifactId>jakarta.servlet-api</artifactId>
</dependency>
</dependencies>
</project>
immortal-maqiao-depencies中需要增加的自身包:
至此模块项目创建集成完成。
3>具体编码:
在immortal-maqiao-core-mybatis 这个模块中只是对mybatis进行了一些封装,但是并没有配置数据库连接,连接池等内容,因此这些配置要在本模块中实现,数据库选用mysql , 连接池中间件选用druid。
增加一个DruidConfiguration配置类,配置druid,如下:
package immortal.maqiao.core.db;
import com.alibaba.druid.support.http.StatViewServlet;
import com.alibaba.druid.support.http.WebStatFilter;
import immortal.maqiao.factory.YamlPropertySourceFactory;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.boot.web.servlet.ServletRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configur