java语言简单、安全、支持多线程、高性能和多年javaEE的技术积累,能够快速、安全、高性能地构建互联网项目。
1.Spring 的历史
在Spring框架没有开发出来时,javaEE是以Sun公司所制定EJB(Enterprise Java Bean)作为标准的。在"遥远"的EJB年代,开发一个EJB需要大量的接口和配置文件,直至EJB2.0的年代,开发一个EJB还需要配置两个文件,其结果就是配置的工作量比开发的工作量还要大。其次EJB是运行在EJB容器中的,而sun公司定义的JSP和Servlet却是运行在Web容器中的,于是你可以想象得到,需要使用Web容器去调用EJB容器的服务。这就意味着存在以下的弊端:
- 需要增加调用的配置文件才能让Web容器调用EJB容器;
- 与此同时需要开发两个容器,非常多的配置内容和繁琐的规范导致开发效率十分低下,这非常让当时的开发者诟病;
- 对于Web容器调用EJB容器的服务这种模式,注定了需要通过网络传递,造成性能不佳;
- 对于测试人员还需要了解许多EJB繁琐的细节,才能进行配置和测试,这样测试也难以运行。
2004年 ,Spring成为了现实中JavaEE开发的标准。
- Spring以强大的控制反转(IOC)来管理各类Java资源,从而降低了各种资源的耦合;
- 并且提供了极低的侵入性,也就是使用Spring框架开发的编码,脱离了SpringAPI也可以继续使用;
- 而Spring的面向切面的编程(AOP)通过动态代理技术,允许我们按照约定进行配置编程,进而增强了Bean的功能,它擦除了大量重复的代码,如数据库编程所需大量的try…catch…finally…语句以及数据库事务控制代码逻辑,使得开发人员更加集中精力于业务开发,而非资源功能性开发;
- Spring还提供许多整合了当时非常六次那个的框架的模板,如持久层Hibernate的HibernateTemplate模板、IBATIS的SqlMapClientTemplate模板等,极大地融合并简化了当时主流技术的使用,使得其展示了强有力的生命力,并延续到至今。
2.注解还是XML
Spring1.x:早期(JDK5之前),不支持注解,只能用XML;后期(JDK5之后),一派使用注解,一派使用XML。
Spring2.x:引入了少量的注解,如@Component、@Service等,但是功能还不够强大,因此绝大部分是以使用XML为主,注解为辅。
Spring3.0之后,形成了这样的一个不成文的共识,对于业务类使用注解,例如,对于MVC开发,控制器使用@Controller,业务层使用@Service,持久层使用@Repository;而对于一些公用的Bean,例如,对于数据库(如Redis)、第三方资源等则使用XML进行配置,纸质今时今日这样的配置方式还在企业中广泛地使用着。也许使用注解还是XML是一个长期存在的话题,但是无论如何都有道理。
随着注解的功能增强,尤其是Servlet3.0规范的提出,Web容器可以脱落web.xml的部署,使得Web容器完全可以基于注解开发,对于Spring3.x和Spring4.x的版本注解功能越来越强大,对于XML的依赖越来越少。
到了4.x的版本后甚至可以完全脱离XML,因此在Spring中使用注解开发占据了主流的地位。
与此同时,Pivotal团队在原有Spring的基础上主要通过注解的方式继续简化了Spring框架的开发,它基于Spring框架开发了Spring Boot,所以Spring Boot并非是代替Spring框架,而是让Spring框架更加容易得到快速的使用。
Pivotal 团队2014年推出Spring Boot 1.0,该版本使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。
2018年3月Spring Boot推出了2.0.0 GA版本,该版本是基于Spring5的,并引入其最新的功能,能够有效支持Java9的开发。Spring Boot致力于在蓬勃发展的快速应用开发领域(rapid application devlopment)借助JavaEE在企业互联网的强势地位成伟业界领导者,它也是近年来Java开发最令人感到惊喜的项目之一。
随着近年来微服务的流行,越来越多的企业需要快速的开发,而Spring Boot除了以注解为主的开发,还有其他的绑定,例如,对服务器进行了绑定和默认对Spring的最大化配置,所以开发者能够尽快进行开发代码、发布和测试自己的项目。这符合了现今微服务快速开发、测试和部署的需要,于是越来越多的企业选择Spring Boot 作为开发的选型,进而使得Spring Boot更加兴旺起来。本书主要就是论述Spring Boot 这以令人激动的开发工具。
3.Spring Boot的优点
</