針對配置的問題進行改進,使其徹底遵循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>