1序
伴随着springmvc的使用,对复杂的部署流程、各种服务的集成、服务之间的影响、配置文件的编写都是耗时耗力的体力活,因此spring开源组织诞生了springboot。
本文主要讲述spring boot的由来,即其它诞生的背景,初衷,现状,及对未来的展望。
2背景
在很早的年代,J2EE还是java企业级应用的王者规范,EJB风行其道。后来有一个叫Rod Johnson的音乐学博士,写了本《Expert One on one J2EE
without EJB》,发明了spring,创办了interface21公司,给Java的企业级开发带来了一阵春风。之后Spring势如破竹,跟随着互联网的兴起,占据着Java领域轻量级开发的王者地位。随着Java语言的发展,Spring也跟着推陈出新,比如Spring3支持了Java注解形式的配置,Spring4支持了java8,同时也推出了springboot。
3初衷
推出springboot的初衷就是为了简化spring的配置,使得开发中集成新功能时更快,简化或减少相关的配置。
4理念
springboot的理念是“习惯由于配置”,因为一般搭建springmvc的人都是各种各样的搬运服务搭建,时间长还繁琐,springboot提供了统一且默认的配置,让用户再无特别需求的情况下,默认配置都满足了开发需求,即默认配置都是大家开发中习惯的配置。
5现状
目前springboot最新的是1.4.0-SNAPSHOT版本。主要有如下功能:
版本统一化、方便快速升级
目前springboot内部自带了一套IOPLATFORM机制,可以实现jar包版本的统一化和今后的快速升级。
某项目中编写的pom
父节点中使用的POM
大家可以发现版本控制都放在了springboot内置的父pom中进行管理了,引用的子项目无需关心每一种服务jar包的版本号和jar包之间的兼容性,把精力集中放在业务coding上。
自动配置(auto-configuration)
一项简化配置的功能,比如在classpath中发现有spring security的jar包,则自动创建相关的bean等。
零配置
spring4.x出现之后提倡使用java配置和注解配置组合,而springboot不需要任何xml配置即可实现spring的所有配置,所有的注入都依赖与条件注解的原理进行注入,这是spring4.x出现之后的新特性。
starters(简化依赖)
这个比较关键,方便spring去集成各类组件,比如redis、mongodb等等。
core(security、aop)
web(web、websocket、ws、vaadin、rest、mobile)
template(freemarker、velocity、groovy templates、thymeleaf)
webserver(tomcat、jetty、undertow),内嵌servlet容器,独立运行
restful框架(jersey)
data数据源异构(jdbc、jpa、mongodb、redis、gemfire、solr、elasticsearch、h2、hsqldb、mysql、postgresql)
social(facebook、linkedin、twitter)
io(batch、integration、jms、amqp)
ops(actuator、remote shell)
CLI(command-line
interface),支持groovy开发
Actuator(对应用系统本身的自省功能)
这个有点devops的味道,使得应用程序本身可以做到自省,比如查看系统运行了多少线程,gc的情况,运行的基本参数等等。
样例:
这是目前从资金通道平台线上获取的即时的具体指标监控,如下图
经过在线json视图查看器格式化之后,展示的各项指标参数,清晰的了解线上系统的内存、CPU等各项指标情况,如下图:
完善的社区,快速发展、快速集成
6优缺点
优点:
1、快速构建项目
2、对主流开发框架的无配置集成
3、项目可独立运行,无需依赖外部的servlet容器
4、提供运行时的监控
5、极大地提高了开发、部署效率
6、与云计算的天然集成
缺点:
1:官方还不支持mybatis,只支持原生的JDBC、HIBERNATE,但mybatis自己开发了集成,不好统一升级,暂时放弃。
2:版本包支持的jar还有很多不足,项目有特殊情况的还需要特别引包或者自定义starter服务。
3、学习资料较少且不够深入,建议看官方文档的更新,因为boot正在快速发展。
7展望
随着devops的兴起,以及docker技术的普及,微服务在一定场合会越来越受欢迎。即使不说微服务,springboot这种可以直接内嵌web服务器打成一个jar包的东东,也更符合devops的趋势:打成个jar包,往服务器上一扔,十分方便,外带自身带的actuator,把监控也给省了一大半,真正做到了可以把精力花在刀刃上。
网友评论