使用Spring boot开发新服务
2016-06-19 本文已影响338人
63e29c663713
口袋最近要开发一个新项目,由于没有历史债务,决定使用一些相对新的框架和特性来进行开发:Spring boot & Gradle & YAML & MyBatis-spring-boot(annotation).
Spring boot
Spring boot 的目的是用来简化新Spring应用的初始搭建以及开发过程,使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。
同时结合使用YAML,不在使用繁琐难读的XML文件。
Spring Boot天生和Groovy结合紧密,它提供的很多便捷功能,并可用来编写Gradle构建文件,简洁清晰。
为了简化依赖图,Boot的功能是模块化的,通过导入Boot所谓的“starter”模块,可以将许多的依赖添加到工程之中。常用的starters有:
- spring-boot-starter-actuator : 引入一组基本的Spring项目
- spring-boot-starter-web : 对于web开发,提供启动嵌入式Tomcat容器的自动化配置,并且提供对微服务应用有价值的端点信息,如服务器信息、应用指标(metrics)以及环境详情
- spring-boot-starter-security : 自动配置Spring Security,提供基本的认证以及其他高级的安全特性
spring boot 的优点
- 基于 spring 平台
- 内嵌了 tomcat、jetty
- 默认集成了很多的第三方包
- 提供了默认的 pom 文件,简化 maven 的配置
- 提供了 health check、security
- 少量 spring 配置
- 推荐使用 java-base annotation configuration,而不是大量的 applicationContext.xml
- 默认支持 logback
开发过程中踩到的坑
- 项目中添加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
}
- 由于系统需要引入dubbo,dubbo需要使用xml来进行配置,而属性文件是使用yaml来编写,启动服务时,xml文件读取不到yaml中的配置:
apricotforest:
dubbo:
zookeeper: prod.zookeeper-af1:2181
当改为下述代码时,可正常读取:
apricotforest.dubbo.zookeeper: prod.zookeeper-af1:2181