我们都知道,Spring是一个非常经典的应用框架,与其说是Java开发不如说是Spring开发,为什么现在越来越多的人会选择用Spring Boot呢?。要回答这个问题,还需要从Java Web开发的发展历史开始说起。
自1995年James Gosling(詹姆斯·高斯林)带领团队设计发布Java语言以来,Java一直排在编程语言排行榜的前列,James Gosling也被称为“Java之父”。
在最初发布的Java版本中,包含Java SE、JavaEE、JavaME。
Java SE(Standard Edition)作为标准版本,提供最核心的基础功能,Java EE(Enterprise Edition)作为企业版,主要用于企业级的Web开发,JavaME(Micro Edition)作为微型版本主要应用与移动设备的开发。随着Java的语言的广泛应用,Java也找到了自身的优势,Java EE版本被应用得最多。
从1996年开始,JavaEE开发是基于JSP + Java Bean来完成的。
后来慢慢地演变,1997年官方推出了 JSP + Servlet + Java Bean来进行开发,Servlet起到了调度控制的作用,这是MVC设计的雏形。
然后,发展出现了 JSP + Sevlet + Java Bean + Dao的模式,将业务逻辑处理和数据库访问分离,出现了三层架构设计理念。
再后来,1998年前后,为了满足多服务器之间的通信,采用了JSP + Servlet + EJB的形式,出现了RPC设计的雏形。
之后,继续演变,在2006年首次出现 JSF + EJB + JPA,提出前后端完全隔离开发的思想。
当然,这些技术都是Java官方提供的。好像,一直都不那么受欢迎。尤其是在开源社区发布一些开源的产品用来来代替官方退出的这些技术,主要目的是为了简化开发。于是就出现了许多非常经典的Java开发框架。。
下面,简单总结四位全球知名的Java Web开发框架创始人,也是JavaEE开发的改造者,
第一位是Gavin King(加文·金),Hibernate框架创始人,一个具有革命性意义的、全自动化的ORM框架,于2006年发布,最初的版本是基于JPA来实现的。
第二位是Craig Mcclanahan(克雷格·麦克拉纳汉),著名的Struts框架创始人,叫Craig Mcclanahan(克雷格·麦克拉纳汉),比较早的程序员都用过Struts1和Struts2,感受过非常酸爽的味道。2008年发布1.0版本,在2013年6月底还爆发了一次眼中的安全漏洞,那时候开始,我开始全面弃用Struts框架。
第三位是Clinton Begin(克林顿·比格),MyBatis框架创始人,2010年发布,最早期的名字叫做iBatis,它是一个比Hibernate更加轻量级的,半自动化的持久化框架。目前,绝大部分互联网公司都是采用MyBatis作为持久层的框架。
第四位是Rod Johnson(罗德·约翰逊),大名鼎鼎的Spring框架创始人,2004年发布1.0版本,以前叫做万能胶,现在叫做全家桶,真正给程序员带来了春天。
小伙伴们可以对比一下发际线。
Spring是一个通用性非常强的框架,它提供的工具也非常全面,能满足各个领域的开发需求。因此,使用Spring之前需要完成大量的个性化配置。在Spring演变过程中,一直存在一个争议,是使用XML作为配置方式 还是 使用 Annotation注解作为配置方式?
Spring在开源社区不断质疑声中,不断的发展和演变,直到Spring 4.0版本发布的时候,已经全面支持注解方式配置,没有XML也可以进行开发。但是,开发者们在使用纯注解开发以后,发现代码侵入比较多,配置也稍显麻烦,尤其是一些Maven依赖也比较繁杂,包括使用外部的Tomcat容器部署也需要不少的工作量。
于是,Pivotal团队从2013年开始研发设计Spring Boot,它的初衷是为了简化开发,旨在解放程序员的双手。2014年4月,发布全新开源的轻量级框架,Spring Boot1.0版本。
(1)可以独立运行Spring项目
Spring Boot可以以jar包的形式进行独立的运行,使用:java -jar xx.jar 就可以成功的运行项目,或者在应用项目的主程序中运行main函数即可;
(2)内嵌的Servlet容器
内嵌容器,使得我们可以执行运行项目的主程序main函数,实现项目的快速运行;主程序代码SpringbootDemoApplication.java
(3)提供starter简化Manen依赖
Spring Boot提供了一系列的starter pom用来简化我们的Maven依赖,比如创建一个web项目,只需要添加spring-boot-starter-web即可:
(4)自动配置Spring
Spring Boot会根据我们项目中类路径的jar包/类,为jar包的类进行自动配置Bean,这样一来就大大的简化了我们的配置。当然,这只是Spring考虑到的大多数的使用场景,在一些特殊情况,我们还需要自定义自动配置;
(5)无代码生成、无XML配置
Spring Boot神奇的地方不是借助于代码生成来实现的,而是通过条件注解的方式来实现的,这也是Spring 4.x的新特性。
所以,Spring Boot是由Spring发展演进而来的,是Spring进化的结果,是对Sping的升级。