1、Spring Boot是啥
Spring Boot 项目旨在简化创建产品级的Spring 应用和服务;你可通过它来选择不同的Spring 平台;可创建独立的Java 应用和Web 应用,同时提供了命令行工具来允许 'spring scripts'。
——开源中国
该项目主要的目的是:
- 为 Spring 的开发提供了更快更广泛的快速上手
- 使用默认方式实现快速开发
- 提供大多数项目所需的非功能特性,诸如:嵌入式服务器、安全、心跳检查、外部配置等
Spring Boot 不生成代码,完全无需 XML 配置。
以下是本人对Spring Boot的认知:
Spring Boot是开发者和Spring 本身框架的中间层,帮助开发者统筹管理应用的配置,提供基于实际开发中常见配置的默认处理(即习惯优于配置),简化应用的开发,简化应用的运维;总的来说,其目的就是为了对Java web 的开发进行“简化”和加“快”速度。
同时随着微服务概念的推广和实践,Spring Boot的精简理念又使其成为Java微服务开发的不二之选,换句话说,Spring Boot其实就是为了微服务而生的Java web框架。
2、Spring Boot 都干了些啥
Spring Boot 的目标并不是为那些已经得到解决方法的问题领域提供新的解决方案, 而是要将平台用于促进和简化那些已经可用的技术或成熟的开发经验。这使得Boot 成为了那些熟悉Spring 生态系统的开发者的一个理想选择; 同样也通过允许其用一种简化的方式拥抱Spring 技术,从而迎合了更多的新玩家。
因此,从最根本上来讲,Spring Boot就是一些库的集合,它能够被任意项目的构建系统所使用。所以对于Spring Boot 而言,Spring 都干了啥,Spring Boot 就干了啥。
只不过它又额外多干了些事儿:
- 创建可以独立运行的Spring 应用(jar/war)
- 直接内嵌Tomcat 或Jetty 服务器,不需要部署 WAR 文件
- 提供推荐的基础 POM 文件来简化Apache Maven 配置
- 尽可能的根据项目依赖来自动配置Spring 框架
- 提供可以直接在生产环境中使用的功能,如性能指标、应用信息和应用健康检查
- 没有代码生成,也没有XML 配置文件
- 提供优先级不同的统一配置化方案,方便应用的运维
其实Spring Boot 额外的这些功能就是为了简化开发过程中引入或启动相关Spring 功能的配置。这样带来的好处就是降低开发人员对于框架的关注点,可以把更多的精力放在自己的业务代码上。
3、快速体验
Spring Boot 的特点有很多,本文篇幅有限,在此就不一一列举,但就其突出的特点简化、快,我们还是可以体验一下的。
体验目标:使用Spring Boot 搭建一个web 应用程序,并写一个接口,返回一个json 数据。
步骤一:创建一个maven工程,并将Spring Boot 启动所需的jar 依赖进去
如上图所示,构建基于Spring Boot的应用要首先引入了spring-boot-starter-parent,用于统一管理依赖jar的版本。
其次引入了spring-boot-starter-web 依赖,作用是支持 Web 应用开发,包含 spring-mvc 和内嵌的tomcat。
步骤二:写一个main方法用于启动Spring Boot应用
注意,此处需要在main 方法所在class 上添加一个注解@SpringBootApplication
此注解源码如下图所示:
该注解等价于三个注解,@SpringBootConfiguration、@EnableAutoConfiguration、@ComponentScan,即表明该应用采用自动配置的SpringBoot 应用,同时默认以该class 所在包为基础进行扫描所有的类。
步骤三:写自己的Controller接口
如上图,此处基本上和在Spring MVC 框架下写的Controller 没有任何差别。
至此,所有准备工作完毕,整个demo 工程的结构如下:
下面我们将通过采用直接启动main 方法的方式启动应用程序,然后通过浏览器访问。
启动过程中会发现控制台会在我们没有配置任何日志框架的情况下输出应用的启动信息,如图:
这是因为当你没有特别配置指定日志框架,Spring Boot 就会默认采用logback 作为日志框架。
注意,Spring Boot 的应用在没有特别指定的情况下,默认采用8080端口
启动完毕后,我们访问浏览器http://localhost:8080/test
结果如图:
以上我们快速体验基本完成,对比传统的基于Spring 的Java web 开发,我们没有构建web.xml 的配置文件,也没有写任何Spring 的配置文件,同时我们也没有将应用放在tomcat 中进行启动。我们只做了三件事就讲一个应用搭建起来,第一引入SpringBoot,第二写main 方法,第三写一个API 接口。由此可见,Spring Boot 在搭建一个web 应用上确实比传统的Spring 要快很多,方便很多。
Spring Boot 对于其他功能的引入也做了很多简化处理,只需要对应的引入相关功能的spring-boot-starter 依赖即可,如下:
以上依赖引入即可使用其功能,Spring Boot都会采用默认配置的方式进行整合,从而达到了所谓的快和简化的特点。
总结
对于广大使用Spring 框架的开发人员来说,Spring Boot 无疑是一个非常实用的工具,本文只是粗略的介绍了一下Spring Boot。而后通过实际构建了一个基于Spring Boot 的web 应用,来浅显的针对其快速创建Spring 应用的特性进行了验证。Spring Boot 的快和简化,主要是通过习惯优于配置的默认化配置方案来实现的。
对于其它特点如自动配置、内部配置、外部化配置,以及提供'spring scripts' 命令行工具来运行Groovy 文件等,本文都未涉及,感兴趣的读者可以自行体验。
总而言之,基于Spring Boot 的诸多特性,其应该成为每个使用Spring 框架的开发人员的不二选择。
本文作者:毛宾奇(点融黑帮),目前就职于点融网Loan Business团队,Java开发工程师。专注于Java Web开发,业余喜欢学习运维知识,了解前端开发,实践移动端开发。