内容简介:初学 Spring Boot,你需要了解的 7 样东西
本文翻译自 7 Things to Know Getting Started With Spring Boot by Ranga Karanam
Spring Boot 是一个比较 tricky 的框架,所以也往往不容易理解。这篇教程将讲解 Spring Boot 的基本组成,包括 Starter 项目、自动配置和 Starter Parents 等,来帮助初学者能更好的理解和掌握 Spring Boot。
理解 Spring Boot 的架构
Spring Boot 包含这些了组成部分:
- Spring Boot Starter 项目
- Spring Boot Starter Parent
- 自动配置
首先我们会先把 Spring Boot 跟 Spring、Spring MVC 做一个比较,来帮助理解 Spring Boot 到底带来了什么。一旦明白了 Spring Boot 能提供什么功能,也就能更好的使用 Spring Boot。
Spring Boot vs Spring MVC vs Spring
它们之间的关系,最重要的一点是:
Spring Boot 跟 Spring、Spring MVC 不是竞争关系,Spring Boot 是为了能更好的使用他们。
Spring 框架
Spring 框架最重要的特性就是依赖注入(Dependency Injection),而所有 Spring 模块的核心就是依赖注入和控制反转(IOC - Inversion of Control)。
通过妥善的使用依赖注入和控制反转,我们可以较为容易地开发出松散耦合的应用,并且易于测试。
Spring MVC
Spring MVC 提供了诸如 Dispatcher Servlet、ModelAndView 和 View Resolver 等,让编写松散耦合的 Web 应用变得很容易。
Spring Boot
Spring、Spring MVC 的一个弊端就是配置很复杂:
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix"> <value>/WEB-INF/views/</value> </property> <property name="suffix"> <value>.jsp</value> </property> </bean> <mvc:resources mapping="/webjars/**" location="/webjars/"/>
而 Spring Boot 通过 自动配置 和 Starter Project 解决了这个问题。同时它也提供了很多特性,让构建 production-ready 的应用变得容易和迅速。
关于 Spring Boot 和 Spring、Spring MVC 更深层次的对比,请阅读: Spring Boot vs. Spring MVC vs. Spring - How do they compare?
Spring Boot 自动配置
Spring 和 Spring MVC 有非常多的 XMl 和 Java Bean 配置。 而 Spring Boot 通过一个新思路为我们解决了这个问题:
我们能不能让配置变得更智能?当应用里面增加了 Spring MVC 的 JAR 包,我们能不能自动地配置一些 Java Bean?
- 如果 classpath 里面有 Hibernate 的 JAR 包,Data Source 就自动配置好了,怎么样?
- 如果 classpath 里面有 Spring MAC 的 JAR 包,Dispatcher Servlet 就自动配置好了,怎么样?
Spring Boot 自动配置的规则:
Spring Boot 首先会检查这两部分:一是 classpath 里面存在的框架;二是应用已经存在的配置。结合这两部分,Spring Boot 就可以提供这些框架所需的基本配置,这就是 Spring Boot 的自动配置。
关于自动配置的深层讲解,请阅读: What is Spring Boot Auto Configuration?
Spring Boot Starter 项目
Spring Boot 文档里是这样描述 Starter 项目的:
Starter 项目是一系列方便的依赖描述,可以在我们的项目中引用。通过 starter 项目,我们能“一站式”得获得所有所需的 Spring 以及相关技术,而不用像以前一样去找各种事例代码,复制相关的依赖描述。例如:如果我们想使用 Spring 和 JPA 来链接数据库,我们只需要把 spring-boot-starter-data-jpa 引入到我们的项目中,项目就搭建完了。
下面通过 Spring Boot Starter Web 来举个例子:
如果我们想开发一个 Web 应用或者 RESTful 服务,我们就可以直接使用 Spring Boot Starter Web。
当把 Spring Boot Starter Web 加到我们的项目依赖中,我们就可以看到相关的很多其他依赖也被加到应用里面了,如截图:
这里面包含了很多开发一个 Web 应用所需的常用模块。通过 Spring Boot Starter Web,我们可以很容易的引入并使用它们:
- Spring - core,beans,context,AOP
- Web MVC - Spring MVC
- Jackson - JSON 解析库
- Validation - Hibernate Validator,Validation API
- Embedded Servlet Container - Tomcat
- Logging - logback,slf4j
几乎所有的 Web 应用都需要这些模块,Spring Boot Starter Web 已经打包好了这些依赖。而开发者就不需要去处理这些依赖,以及它们的版本兼容问题。
Spring Boot 提供了大量这类 starter 项目。而 Spring Initializr 也全都支持,其中就包括:
- spring-boot-starter-web-services:构建 SOAP Web 服务应用
- spring-boot-starter-web:构建 Web 应用和 RESTful 服务
- spring-boot-starter-test:编写单元测试和集成测试
- spring-boot-starter-jdbc:传统的 JDBC 应用
- spring-boot-starter-hateoas:给应用增加 HATEOAS 特性让服务更 RESTful 化
- spring-boot-starter-security:使用 Spring Security 来进行认证和授权
- spring-boot-starter-data-jpa:Spring Data JPA 和 Hibernate
- spring-boot-starter-cache:让 Spring 框架支持缓存
- spring-boot-starter-data-rest:使用 Spring Data REST 来暴露一个简单的 REST 服务
想更深入的了解 starter 项目,请阅读: Initializing Projects with Spring Boot Starters - Web and JPA
Spring Boot Starter Parent
几乎所有 Spring Boot 项目的 pom.xml 配置中,都使用了 spring-boot-starter-parent 来作为 parent 配置:
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.0.0.RELEASE</version> </parent>
parent POMs 让我们更好的管理多个子项目或者模块:
- 配置相关:Java 版本和其他属性
- 依赖管理:依赖的版本
- 默认插件的配置
想更深入的了解 Spring Boot Starter Parent,请阅读: Introduction to Spring Boot Starter Parent
Spring Initializr:让创建 Spring Boot 项目像开 F1 赛车一样快
Spring Initializr 是一个非常好的初始化 Spring Boot 项目的工具。
它提供了一个很简单的 UI,通过它我们可以创建各种不同类型的 Spring 项目,如:
- Web 应用
- RESTful 服务
- Batch 应用
我们来体验一下怎么通过 Spring Initializr 来创建一个项目:
如上图所示,只需简单几步:
- 打开 Spring Initializr (start.spring.io/)
- Group 输入
com.in28minutes.springboot
- Artifact 输入
student-services
- dependency 选择
Web
- Group 输入
- 点击页面下方的
Generate Project
按钮 - 把项目导入到
intelliJ
或者Eclipse
即可。
想更深入的了解 Spring Initializr,请阅读: Spring Initializr - Bootstrap Your Spring Boot Applications at F1 speed!
Spring Boot 和内嵌服务器
当我们创建了一个可部署的包之后,我们可以在部署包中嵌入一个服务器(如 Tomcat)。
例如,对于一个 Spring Boot 应用,我们可以构建一个 JAR 包,里面包含了一个内嵌的 Tomcat 服务器(Embedded Tomcat),然后我们就可以像执行一个普通的 Java 程序一样启动这个服务器。
一个内嵌的服务器意味着,在我们的部署包里面包含了服务器的二进制文件(如 tomcat.jar)
我们来看下 spring-boot-starter-web 的依赖:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> <version>2.0.0.M6</version> <scope>compile</scope> </dependency>
可以看到,默认情况下,Starter Web 已经包含了 Starter Tomcat 的依赖:
- Tomcat 是 Spring Boot 的默认内嵌服务器
- Spring Boot 也支持 Jetty 和 Undertow
想更深入的了解内嵌服务器,请阅读: Spring Boot and Embedded Servers - Tomcat, Jetty, and Undertow
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- Java编程初学者应该了解的编程框架
- Docker 入门概述(适合初学者了解相关概念)
- 揭开容器的神秘面纱:帮助初学者深入了解容器技术
- [译] 初学者需要了解的Go语言中的HTTP timeout
- nginx初学入门
- webpack 初学指南
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Perl语言编程
克里斯蒂安森 (Tom Christiansen) (作者)、Brian D Foy (作者)、Larry Wall (作者)、Jon Orwant (作者) / 苏金国 (译者)、吴爽 (译者) / 中国电力出版社 / 2014-9-1 / 148
从1991年第一版问世以来,《Perl语言编程》很快成为无可争议的Perl宝典,如今仍是这种高实用性语言的权威指南。Perl最初只是作为一个功能强大的文本处理工具,不过很快发展成为一种通用的编程语言,可以帮助成千上万的程序员、系统管理员,以及像你一样的技术爱好者轻松完成工作。 人们早已经翘首以待这本“大骆驼书”的更新,如今终于得偿所愿。在这一版中,三位颇有声望的Perl作者讲述了这种语言当前......一起来看看 《Perl语言编程》 这本书的介绍吧!