springmvc迁移springboot之路1

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

springmvc迁移springboot之路1_第1张图片

父节点中使用的POM

springmvc迁移springboot之路1_第2张图片

大家可以发现版本控制都放在了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的情况,运行的基本参数等等。

springmvc迁移springboot之路1_第3张图片

样例:

这是目前从资金通道平台线上获取的即时的具体指标监控,如下图

springmvc迁移springboot之路1_第4张图片

经过在线json视图查看器格式化之后,展示的各项指标参数,清晰的了解线上系统的内存、CPU等各项指标情况,如下图:

springmvc迁移springboot之路1_第5张图片

完善的社区,快速发展、快速集成

springmvc迁移springboot之路1_第6张图片
springmvc迁移springboot之路1_第7张图片
springmvc迁移springboot之路1_第8张图片

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,把监控也给省了一大半,真正做到了可以把精力花在刀刃上。

你可能感兴趣的:(springmvc迁移springboot之路1)