wssccc


我们在世纪末的流光中追寻过往,追寻那些渐渐模糊的面容


Spring Boot

以前写PHP的时候自己有一个all in one的框架,包括很方便的Db工具类、缓存、请求分发等等,整个工程可以打包成一个phar启动。
后来转到Java组,一直想找一个类似的东西。

Jetty Embedded

最开始关注的是Jetty Embedded方案。Jetty可以很方便的集成到一般应用中,大致思路就是先写好各种Service类独立测试,
然后由集成的Jetty向外暴露HTTP服务。整个应用打包成fat jar,部署也很方便。

这个方案的缺点在于,没有想好怎么启动服务。最开始只是简单的用java -jar启动了一个进程,
后来试用了一下supervisord来管理,也感觉不是很方便。而且日志基本靠管道,fat jar还时不时出现冲突。

SpringBoot

当时公司在做一些微服务的改造,然后就知道了有SpringBoot这个东西。SpringBoot有几个feature是非常有吸引力的。

多PropertySource

一直以来配置管理是个大问题,基本都是写一堆常量凑合着用。而Spring 的 Environment可以挂多个PropertySource,
可以很方便的提供配置的默认值,以及覆盖配置。比如想临时改一下服务器端口,可以直接往系统环境变量或者程序启动参数中添加对应的值,
而不需要修改jar包内的东西。

带类型信息的配置

借助 @ConfigurationProperties 可以实现properties到实体类的映射,如果配置类型有误,基本上在启动阶段就能检查到。

Profile管理

SpringBoot自带了Profile管理,再也不用maven的Profile了。

服务启动

SpringBoot黑科技之一,通过在jar包头部加上启动脚本,使jar可以直接执行。
ln -s/etc/init.d/ 里面,还能以 service myapp start 这种形式启动。(此处有运维同学的掌声)

Auto-configuration

基于注解的自动配置。这个主要是可以自己写一些starter,然后自动配置一些平时常用的组件。

集成Spring其它组件

SpringBoot最大的优势还是对整个Spring生态的支持,包括Spring Data、Spring Mvc等等平时用到用不到的东西。

总结

SpringBoot包含了微服务开发中常用的组件,而且借助Auto-configuration特性,基本不用配置(除了写一些properties),
对于开发效率的提升非常明显。

下一篇应该会介绍SpringBoot集成Groovy支持(实际上跟SpringBoot没太大关系……)。