口袋最近要開發(fā)一個新項目谋币,由于沒有歷史債務(wù)志群,決定使用一些相對新的框架和特性來進行開發(fā):Spring boot & Gradle & YAML & MyBatis-spring-boot(annotation).
Spring boot
Spring boot 的目的是用來簡化新Spring應(yīng)用的初始搭建以及開發(fā)過程戒傻,使用了特定的方式來進行配置玖像,從而使開發(fā)人員不再需要定義樣板化的配置匪燕。
同時結(jié)合使用YAML摸吠,不在使用繁瑣難讀的XML文件丛塌。
Spring Boot天生和Groovy結(jié)合緊密较解,它提供的很多便捷功能,并可用來編寫Gradle構(gòu)建文件赴邻,簡潔清晰印衔。
為了簡化依賴圖,Boot的功能是模塊化的姥敛,通過導(dǎo)入Boot所謂的“starter”模塊奸焙,可以將許多的依賴添加到工程之中。常用的starters有:
- spring-boot-starter-actuator : 引入一組基本的Spring項目
- spring-boot-starter-web : 對于web開發(fā)彤敛,提供啟動嵌入式Tomcat容器的自動化配置与帆,并且提供對微服務(wù)應(yīng)用有價值的端點信息,如服務(wù)器信息墨榄、應(yīng)用指標(metrics)以及環(huán)境詳情
- spring-boot-starter-security : 自動配置Spring Security玄糟,提供基本的認證以及其他高級的安全特性
spring boot 的優(yōu)點
- 基于 spring 平臺
- 內(nèi)嵌了 tomcat、jetty
- 默認集成了很多的第三方包
- 提供了默認的 pom 文件袄秩,簡化 maven 的配置
- 提供了 health check阵翎、security
- 少量 spring 配置
- 推薦使用 java-base annotation configuration逢并,而不是大量的 applicationContext.xml
- 默認支持 logback
開發(fā)過程中踩到的坑
- 項目中添加checkstyle.xml文件的同時,需要添加suppressions.xml文件郭卫,單純的在checkstyle中配置下述代碼時筒狠,提示找不到suppressions.xml。
<module name="SuppressionFilter">
<property name="file" value="/suppressions.xml"/>
</module>
解決方案:
// build.gradle
def configDir = new File(buildscript.sourceFile.parentFile, 'config')
ext {
checkstyleConfigDir = "$configDir/checkstyle"
}
checkstyle {
configFile = new File(checkstyleConfigDir, "checkstyle.xml")
configProperties.checkstyleConfigDir = checkstyleConfigDir
}
- 由于系統(tǒng)需要引入dubbo箱沦,dubbo需要使用xml來進行配置辩恼,而屬性文件是使用yaml來編寫,啟動服務(wù)時谓形,xml文件讀取不到y(tǒng)aml中的配置:
apricotforest:
dubbo:
zookeeper: prod.zookeeper-af1:2181
當改為下述代碼時灶伊,可正常讀取:
apricotforest.dubbo.zookeeper: prod.zookeeper-af1:2181