spring-boot-unitils-starter彻底spring boot化

针对配置的问题进行改进,使其彻底遵循spring boot规则java

1、问题mysql

在上一篇文章中,咱们的配置都是放在unitils.properties,以下:git

unitils.modules=database,dbunit,springBoot
unitils.module.springBoot.className=com.unitils.boot.SpringBootModule
unitils.module.springBoot.runAfter=database
unitils.module.springBoot.enabled=true
#自扩展模块
unitils.module.dbunit.className=org.unitils.dbunit.DbUnitModule
############################################################################
### Database模块相应配置 ###
############################################################################
## Full qualified class name of an implementation of org.unitils.database.datasource.DataSourceFactory. This class is used
# to provide a DataSource for all database unit tests and for the DBMaintainer.
org.unitils.database.datasource.DataSourceFactory.implClassName=org.unitils.database.datasource.impl.DefaultDataSourceFactory
#数据库事务类型
#可选:commit/rollback/disanled
database.default.transaction.mode=commit
## 测试数据库
database.driverClassName=com.mysql.jdbc.Driver
# 此数据库链接信息
database.url=jdbc:mysql://127.0.0.1/test
# 此数据库链接用户名
database.userName=root
# 此数据库链接用户密码
database.password=12345678
# 此数据库链接的schema
database.schemaNames=test
# 此数据库数据库类型:oracle/mysql/postgres等
database.dialect=mysql
# 不一样数据库对应的实现
# Fully qualified classnames of the different, dbms specific implementations of org.dbmaintain.database.Database.implClassName
org.dbmaintain.database.Database.implClassName.oracle=org.dbmaintain.database.impl.OracleDatabase
org.dbmaintain.database.Database.implClassName.mysql=org.dbmaintain.database.impl.MySqlDatabase
# 是否支持初数据库始化脚本,默认关闭(能够经过脚本每次重建数据库等)
# The database maintainer is disabled by default.
updateDataBaseSchema.enabled=true
#This table is by default not created automatically
dbMaintainer.autoCreateExecutedScriptsTable=true
# Indicates whether a from scratch update should be performed when the previous update failed, but
# none of the scripts were modified since that last update. If false a new update will be tried only when
# changes were made to the script files.
dbMaintainer.keepRetryingAfterError.enabled=true
dbMaintainer.script.locations=
############################################################################
### Database模块相应配置 ###
############################################################################
# Dbunit中DataSet和ExpectedDataSet的数据准备实现类,(也能够用Excel准备数据,须要替换实现类)
DbUnitModule.DataSet.factory.default=com.unitils.boot.xls.MultiSchemaXlsDataSetFactory
DbUnitModule.ExpectedDataSet.factory.default=com.unitils.boot.xls.MultiSchemaXlsDataSetFactory

org.dbunit.database.IMetadataHandler.implClassName=org.dbunit.ext.mysql.MySqlMetadataHandler
## Dbunit中测试数据处理策略
# CleanInsertLoadStrategy:先删除dateSet中有关表的数据,而后再插入数据。
# InsertLoadStrategy:只插入数据。
# RefreshLoadStrategy:有一样key的数据更新,没有的插入。
# UpdateLoadStrategy: 有一样key的数据更新,没有的不作任何操做。
DbUnitModule.DataSet.loadStrategy.default=org.unitils.dbunit.datasetloadstrategy.impl.CleanInsertLoadStrategy
# XSD generator
dataSetStructureGenerator.xsd.dirName=/tmp/resources/xsd

SpringModule.applicationContextFactory.implClassName=com.unitils.boot.util.SpringBootApplicationContextFactory

这里面既包含固定配置(例如,指定module、DataSet的数据加载等),也包含应用特定的配置(例如:数据库链接参数),这很容易对用户形成困扰,针对这个问题,下面进行改进、优化,将固定的配置隐藏起来,将应用特定的配置暴露给用户,让用户本身配置。github

2、改进步骤spring

一、将unitils.properties文件移动到spring-boot-unitils-starter的src/main/resources目录下sql

                                   

将unitils.properties中的应用数据库配置信息删除掉,添加一条配置:数据库

unitils.configuration.localFileName=application-ut.properties

这里指定了用户能够本身配置的属性,例如,应用特定的数据库配置。oracle

能在unitils.properties配置unitils.configuration.localFileName=application-ut.properties缘由以下:app

unitils加载配置文件的顺序为:maven

a、首先加载unitils-default.properties。

b、而后加载由属性unitils.configuration.customFileName指定的文件,即为unitils.properties文件。c、第三个加载由属性unitils.configuration.localFileName指定的文件,unitils-default.properties中unitils.configuration.localFileName的值为unitils-local.properties文件,不过因为属性能够覆盖,咱们能够在unitils.properties指定unitils.configuration.localFileName的值为application-ut.properties,所以,在加载完unitils.properties后,会去加载application-ut.properties文件的值。d、后续会加载System.getProperties()的值。

                               

二、将unitils.properties打包进jar

 修改pom文件,将unitils.properties打包进jar,而后用户在引入spring-boot-unitils-starter的jar包时,就会自动引入unitils.properties。pom修改以下:

<resources>
            <resource>
                <directory>src/main/resources</directory>
                <includes>
                    <include>unitils.properties</include>
                </includes>
            </resource>
        </resources>

3、实践

在spring-boot-unitils-starter-sample的resources目录下新建application-ut.properties文件,里面填入数据库的相关配置。以下:

database.driverClassName=com.mysql.jdbc.Driver
# 此数据库链接信息
database.url=jdbc:mysql://127.0.0.1/test
# 此数据库链接用户名
database.userName=root
# 此数据库链接用户密码
database.password=12345678
# 此数据库链接的schema
database.schemaNames=test
# 此数据库数据库类型:oracle/mysql/postgres等
database.dialect=mysql

这就能够运行测试用例了。若是用户须要修改unitils-default.properties或unitils.properties中的默认配置,只须要在application-ut.properties中配置新值便可。

4、jar包下载

spring-boot-unitils-starter已经上传到了maven中央仓库,而且已经能够下载了。maven依赖以下:

<dependency>
  <groupId>com.github.yangjianzhou</groupId>
  <artifactId>spring-boot-unitils-starter</artifactId>
  <version>1.1.0.RELEASE</version>
</dependency>

 

附:项目地址:https://github.com/yangjianzhou/spring-boot-unitils

相关文章
相关标签/搜索