1.2 注解还是XML
只是在Spring早期的1.x版本中,由于当时的JDK并不能支持注解,因此只能使用XML。而很快随着JDK升级到JDK5,它加入了注解的新特性,这样注解就被广泛地使用起来,于是Spring的内部也分为了两派,一派是使用XML的赞同派,一派是使用注解的赞同派。为了简化开发,在Spring 2.x之后的版本也引入了注解,不过只是少量的注解,如@Component、@Service等,但是功能还不够强大,因此对于Spring的开发,绝大部分的情况下还是以使用XML为主,注解为辅。
到了Spring 3.0后,引入了更多的注解功能,于是在Spring中产生了这样一个很大的分歧,即是使用注解还是使用XML?对于XML的引入,有些人觉得过于繁复,而对于注解的使用,会使得注解分布得到处都是,难以控制,有时候还需要了解很多框架的内部实现才能准确使用注解开发所需的功能。这个时候大家形成了这样的一个不成文的共识,对于业务类使用注解,例如,对于MVC开发,控制器使用@Controller,业务层使用@Service,持久层使用@Repository;而对于一些公用的Bean,例如,对于数据库(如Redis)、第三方资源等则使用XML进行配置,直至今时今日这样的配置方式还在企业中广泛地使用着。也许使用注解还是XML是一个长期存在的话题,但是无论如何都有道理。
随着注解的功能增强,尤其是Servlet 3.0规范的提出,Web容器可以脱离web.xml的部署,使得Web容器完全可以基于注解开发,对于Spring 3.x和Spring 4.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版本,该版本是基于Spring 5的,并引入其最新的功能,能够有效支持Java 9的开发。Spring Boot致力于在蓬勃发展的快速应用开发领域(rapid application development)借助Java EE在企业互联网的强势地位成为业界领导者,它也是近年来Java开发最令人感到惊喜的项目之一。
随着近年来微服务的流行,越来越多的企业需要快速的开发,而Spring Boot除了以注解为主的开发,还有其他的绑定,例如,对服务器进行了绑定和默认对Spring的最大化配置,所以开发者能够尽快进行开发代码、发布和测试自己的项目。这符合了现今微服务快速开发、测试和部署的需要,于是越来越多的企业选择Spring Boot作为开发的选型,进而使得Spring Boot更加兴旺起来。本书主要就是论述Spring Boot这一令人激动的开发工具。