spring-boot-unitils-starter完全spring boot化
2018-07-10 00:08
375 查看
针对配置的问题进行改进,使其完全遵循spring boot规则
一、问题
在上一篇文章中,我们的配置都是放在unitils.properties,如下:
这里面既包含固定配置(例如,指定module、DataSet的数据加载等),也包含应用特定的配置(例如:数据库连接参数),这很容易对用户造成困扰,针对这个问题,下面进行改进、优化,将固定的配置隐藏起来,将应用特定的配置暴露给用户,让用户自己配置。
二、改进步骤
1、将unitils.properties文件移动到spring-boot-unitils-starter的src/main/resources目录下
![](https://oscimg.oschina.net/oscnet/9584ddf9d8d26fe110d15f60d2931c4c148.jpg)
将unitils.properties中的应用数据库配置信息删除掉,添加一条配置:
这里指定了用户可以自己配置的属性,例如,应用特定的数据库配置。
能在unitils.properties配置unitils.configuration.localFileName=application-ut.properties原因如下:
unitils加载配置文件的顺序为:
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()的值。
![](https://oscimg.oschina.net/oscnet/f2c4823b87dca3e1066361e6832f5eff45a.jpg)
2、将unitils.properties打包进jar
修改pom文件,将unitils.properties打包进jar,然后用户在引入spring-boot-unitils-starter的jar包时,就会自动引入unitils.properties。pom修改如下:
三、实践
在spring-boot-unitils-starter-sample的resources目录下新建application-ut.properties文件,里面填入数据库的相关配置。如下:
这就可以运行测试用例了。如果用户需要修改unitils-default.properties或unitils.properties中的默认配置,只需要在application-ut.properties中配置新值即可。
四、jar包下载
spring-boot-unitils-starter已经上传到了maven中央仓库,并且已经可以下载了。maven依赖如下:
附:项目地址:https://github.com/yangjianzhou/spring-boot-unitils
一、问题
在上一篇文章中,我们的配置都是放在unitils.properties,如下:
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的数据加载等),也包含应用特定的配置(例如:数据库连接参数),这很容易对用户造成困扰,针对这个问题,下面进行改进、优化,将固定的配置隐藏起来,将应用特定的配置暴露给用户,让用户自己配置。
二、改进步骤
1、将unitils.properties文件移动到spring-boot-unitils-starter的src/main/resources目录下
![](https://oscimg.oschina.net/oscnet/9584ddf9d8d26fe110d15f60d2931c4c148.jpg)
将unitils.properties中的应用数据库配置信息删除掉,添加一条配置:
unitils.configuration.localFileName=application-ut.properties
这里指定了用户可以自己配置的属性,例如,应用特定的数据库配置。
能在unitils.properties配置unitils.configuration.localFileName=application-ut.properties原因如下:
unitils加载配置文件的顺序为:
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()的值。
![](https://oscimg.oschina.net/oscnet/f2c4823b87dca3e1066361e6832f5eff45a.jpg)
2、将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>
三、实践
在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中配置新值即可。
四、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
相关文章推荐
- 深入浅析Spring-boot-starter常用依赖模块
- spring-boot-starter的理解和开发
- Spring Boot学习--spring-boot-starter-parent及starters
- maven <artifactId>spring-boot-starter-parent</artifactId>里配置的版本<version>1.3.0.M1</version>和<version>1.5.6.RELEASE</version>有什么区别
- 深入浅析Spring-boot-starter常用依赖模块
- mybatis-spring-boot-starter 1.0.1 之后的版本问题
- 自定义spring-boot-starter-hbase
- SpringBoot随笔(一): spring-boot-starter-actuator 模块详解
- spring-boot-starter-parent 包maven依赖报错
- spring-boot-starter-redis配置详解
- ELK第七篇:spring-boot-starter-data-elasticsearch使用
- 整合spring-boot-starter-data-redis报错解决
- 使用spring-boot-starter-mail实现邮件发送
- spring-boot-starter-redis 集成
- Spring Boot(3)---自定义spring boot starter 问题
- spring boot前传(一):spring完全注解(零配置)编程方式
- spring-boot-starter-logging logback常用配置之<appender>标签详解
- spring-boot-starter-amqp踩坑记
- springboot ehcache starter自动配置
- Spring Boot的启动器Starter详解