本章内容
Spring Boot简化Spring应用程序开发
Spring Boot的基本特性
Spring Boot工作区的设置
以下知识点解析来自于《SpringBoot实战》文档其中的一部分!由于不影响观看,只选取了其中的一部分来展示。 需要完整版的点击这里!!暗号博客园,获取!
前言
Spring Framework已有十余年的历史了,已成为Java应用程序开发框架的事实标准。在如此
悠久的历史背景下,有人可能会认为Spring放慢了脚步,躺在了自己的荣誉簿上,再也做不出什
么新鲜的东西,或者是让人激动的东西。甚至有人说,Spring是遗留项目,是时候去看看其他创
新的东西了。
1.1 Spring 风云再起
Spring诞生时是Java企业版(Java Enterprise Edition,JEE,也称J2EE)的轻量级代替品。无需开发重量级的Enterprise JavaBean(EJB),Spring为企业级Java开发提供了一种相对简单的方法,通过依赖注入和面向切面编程,用简单的Java对象(Plain Old Java Object,POJO)实现了EJB的功能。
虽然Spring的组件代码是轻量级的,但它的配置却是重量级的。一开始,Spring用XML配置,而且是很多XML配置。Spring 2.5引入了基于注解的组件扫描,这消除了大量针对应用程序自身
组件的显式XML配置。Spring 3.0引入了基于Java的配置,这是一种类型安全的可重构配置方式,
可以代替XML。
尽管如此,我们依旧没能逃脱配置的魔爪。开启某些Spring特性时,比如事务管理和Spring
MVC,还是需要用XML或Java进行显式配置。启用第三方库时也需要显式配置,比如基于
Thymeleaf的Web视图。配置Servlet和过滤器(比如Spring的DispatcherServlet)同样需要在
web.xml或Servlet初始化代码里进行显式配置。组件扫描减少了配置量,Java配置让它看上去简洁
不少,但Spring还是需要不少配置。
所有这些配置都代表了开发时的损耗。因为在思考Spring特性配置和解决业务问题之间需要
进行思维切换,所以写配置挤占了写应用程序逻辑的时间。和所有框架一样,Spring实用,但与
此同时它要求的回报也不少。
除此之外,项目的依赖管理也是件吃力不讨好的事情。决定项目里要用哪些库就已经够让人
头痛的了,你还要知道这些库的哪个版本和其他库不会有冲突,这难题实在太棘手。
并且,依赖管理也是一种损耗,添加依赖不是写应用程序代码。一旦选错了依赖的版本,随
之而来的不兼容问题毫无疑问会是生产力杀手。
Spring Boot让这一切成为了过去。
1.1.1 重新认识 Spring
假设你受命用Spring开发一个简单的Hello World Web应用程序。你该做什么?我能想到一些
基本的需要。
1、一个项目结构,其中有一个包含必要依赖的Maven或者Gradle构建文件,最起码要有Spring
MVC和Servlet API这些依赖。
2、一个web.xml文件(或者一个WebApplicationInitializer实现),其中声明了Spring
的DispatcherServlet。 一个启用了Spring MVC的Spring配置。
3、一个控制器类,以“Hello World”响应HTTP请求。
4、 一个用于部署应用程序的Web应用服务器,比如Tomcat。
最让人难以接受的是,这份清单里只有一个东西是和Hello World功能相关的,即控制器,剩
下的都是Spring开发的Web应用程序必需的通用样板。既然所有Spring Web应用程序都要用到它
们,那为什么还要你来提供这些东西呢?
假设这里只需要控制器。代码清单1-1所示基于Groovy的控制器类就是一个简单而完整的 Spring应用程序。
@RestController
class HelloController {
@RequestMapping("/")
def hello() {
return "Hello World"
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
这里没有配置,没有web.xml,没有构建说明,甚至没有应用服务器,但这就是整个应用程
序了。Spring Boot会搞定执行应用程序所需的各种后勤工作,你只要搞定应用程序的代码就好。
假设你已经装好了Spring Boot的命令行界面(Command Line Interface,CLI),可以像下面这
样在命令行里运行HelloController:
$ spring run HelloController.groovy
- 1
想必你已经注意到了,这里甚至没有编译代码,Spring Boot CLI可以运行未经编译的代码。
之所以选择用Groovy来写这个控制器示例,是因为Groovy语言的简洁与Spring Boot的简洁有
异曲同工之妙。但Spring Boot并不强制要求使用Groovy。实际上,本书中的很多代码都是用Java
写的,但在恰当的时候,偶尔也会出现一些Groovy代码。
不要客气,直接跳到1.2.1节吧,看看如何安装Spring Boot CLI,这样你就能试着编写这个小
小的Web应用程序了。现在,你将看到Spring Boot的关键部分,看到它是如何改变Spring应用程
序的开发方式的。
1.1.2 Spring Boot 精要
Spring Boot将很多魔法带入了Spring应用程序的开发之中,其中最重要的是以下四个核心。
1、自动配置:针对很多Spring应用程序常见的应用功能,Spring Boot能自动提供相关配置。
2、起步依赖:告诉Spring Boot需要什么功能,它就能引入需要的库。
3、命令行界面:这是Spring Boot的可选特性,借此你只需写代码就能完成完整的应用程序,
无需传统项目构建。
4、Actuator:让你能够深入运行中的Spring Boot应用程序,一探究竟。
每一个特性都在通过自己的方式简化Spring应用程序的开发。本书会探寻如何将它们发挥到
极致,但就目前而言,先简单看看它们都提供了哪些功能吧。
- 自动配置
在任何Spring应用程序的源代码里,你都会找到Java配置或XML配置(抑或两者皆有),它们
为应用程序开启了特定的特性和功能。举个例子,如果你写过用JDBC访问关系型数据库的应用
程序,那你一定在Spring应用程序上下文里配置过JdbcTemplate这个Bean。我打赌那段配置看
起来是这样的:
@Bean
public JdbcTemplate jdbcTemplate(DataSource dataSource) {
return new JdbcTemplate(dataSource);
}
- 1
- 2
- 3
- 4
这段非常简单的Bean声明创建了一个JdbcTemplate的实例,注入了一个DataSource依赖。当
然,这意味着你还需要配置一个DataSource的Bean,这样才能满足依赖。假设你将配置一个嵌
入式H2数据库作为DataSource Bean,完成这个配置场景的代码大概是这样的:
@Bean
public DataSource dataSource() {
return new EmbeddedDatabaseBuilder()
.setType(EmbeddedDatabaseType.H2)
.addScripts('schema.sql', 'data.sql')
.build();
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
这个Bean配置方法创建了一个嵌入式数据库,并指定在该数据库上执行两段SQL脚本。build()
方法返回了一个指向该数据库的引用。
这两个Bean配置方法都不复杂,也不是很长,但它们只是典型Spring应用程序配置的一小部
分。除此之外,还有无数Spring应用程序有着完全相同的方法。所有需要用到嵌入式数据库和
JdbcTemplate的应用程序都会用到那些方法。简而言之,这就是一个样板配置。
既然它如此常见,那为什么还要你去写呢?
Spring Boot会为这些常见配置场景进行自动配置。如果Spring Boot在应用程序的Classpath里
发 现H2数据库的库,那么它就自动配置一个嵌入式H2数据库。如果在Classpath里发现
JdbcTemplate,那么它还会为你配置一个JdbcTemplate的Bean。你无需操心那些Bean的配置,
Spring Boot会做好准备,随时都能将其注入到你的Bean里
。
Spring Boot的自动配置远不止嵌入式数据库和JdbcTemplate,它有大把的办法帮你减轻配
置负担,这些自动配置涉及Java持久化API(Java Persistence API,JPA)、Thymeleaf模板、安全和Spring MVC。第2章会深入讨论自动配置这个话题。
- 起步依赖
向项目中添加依赖是件富有挑战的事。你需要什么库?它的Group和Artifact是什么?你需要
哪个版本?哪个版本不会和项目中的其他依赖发生冲突?
Spring Boot通过起步依赖为项目的依赖管理提供帮助。起步依赖其实就是特殊的Maven依
赖和Gradle依赖,利用了传递依赖解析,把常用库聚合在一起,组成了几个为特定功能而定制
的依赖。
举个例子,假设你正在用Spring MVC构造一个REST API,并将JSON(JavaScript Object
Notation)作为资源表述。此外,你还想运用遵循JSR-303规范的声明式校验,并使用嵌入式的
Tomcat服务器来提供服务。要实现以上目标,你在Maven或Gradle里至少需要以下8个依赖:
org.springframework:spring-core
org.springframework:spring-web
org.springframework:spring-webmvc
com.fasterxml.jackson.core:jackson-databind
org.hibernate:hibernate-validator
org.apache.tomcat.embed:tomcat-embed-core
org.apache.tomcat.embed:tomcat-embed-el
org.apache.tomcat.embed:tomcat-embed-logging-juli
不过,如果打算利用Spring Boot的起步依赖,你只需添加Spring Boot的Web起步依赖(org.springframework.boot:spring-boot-starter-web)①,仅此一个。它会根据依赖传递把其他所需依赖引入项目里,你都不用考虑它们。比起减少依赖数量,起步依赖还引入了一些微妙的变化。向项目中添加了Web起步依赖,实际上指定了应用程序所需的一类功能。因为应用是个Web应用程序,所以加入了Web起步依赖。
与之类似,如果应用程序要用到JPA持久化,那么就可以加入jpa起步依赖。如果需要安全功能,那就加入security起步依赖。简而言之,你不再需要考虑支持某种功能要用什么库了,引入相关起步依赖就行。
此外,Spring Boot的起步依赖还把你从“需要这些库的哪些版本”这个问题里解放了出来。
起步依赖引入的库的版本都是经过测试的,因此你可以完全放心,它们之间不会出现不兼容的
情况。
和自动配置一样,第2章就会深入讨论起步依赖。
3.命令行界面
除了自动配置和起步依赖,Spring Boot还提供了一种很有意思的新方法,可以快速开发Spring
应用程序。正如之前在1.1节里看到的那样,Spring Boot CLI让只写代码即可实现应用程序成为可能。
Spring Boot CLI利用了起步依赖和自动配置,让你专注于代码本身。不仅如此,你是否注意
到代码清单1-1里没有import?CLI如何知道RequestMapping和RestController来自哪个包呢?说到这个问题,那些类最终又是怎么跑到Classpath里的呢?
说得简单一点,CLI能检测到你使用了哪些类,它知道要向Classpath中添加哪些起步依赖才
能让它运转起来。一旦那些依赖出现在Classpath中,一系列自动配置就会接踵而来,确保启用
DispatcherServlet和Spring MVC,这样控制器就能响应HTTP请求了。
Spring Boot CLI是Spring Boot的非必要组成部分。虽然它为Spring带来了惊人的力量,大大
简化了开发,但也引入了一套不太常规的开发模型。要是这种开发模型与你的口味相去甚远,那
也没关系,抛开CLI,你还是可以利用Spring Boot提供的其他东西。不过如果喜欢CLI,你一定想
看看第5章,其中深入探讨了Spring Boot CLI。
4 Actuator
Spring Boot的最后一块“拼图”是Actuator,其他几个部分旨在简化Spring开发,而Actuator
则要提供在运行时检视应用程序内部情况的能力。安装了Actuator就能窥探应用程序的内部情况
了,包括如下细节:
Spring应用程序上下文里配置的Bean
Spring Boot的自动配置做的决策
应用程序取到的环境变量、系统属性、配置属性和命令行参数
应用程序里线程的当前状态
应用程序最近处理过的HTTP请求的追踪情况
各种和内存用量、垃圾回收、Web请求以及数据源用量相关的指标
Actuator通过Web端点和shell界面向外界提供信息。如果要借助shell界面,你可以打开SSH
(Secure Shell),登入运行中的应用程序,发送指令查看它的情况。
第7章会详细探索Actuator的功能。
1.1.3 Spring Boot 不是什么
因为Spring Boot实在是太惊艳了,所以过去一年多的时间里有不少和它相关的言论。原先听
到或看到的东西可能给你造成了一些误解,继续学习本书前应该先澄清这些误会。
首先,Spring Boot不是应用服务器。这个误解是这样产生的:Spring Boot可以把Web应用程
序变为可自执行的JAR文件,不用部署到传统Java应用服务器里就能在命令行里运行。Spring Boot
在应用程序里嵌入了一个Servlet容器(Tomcat、Jetty或Undertow),以此实现这一功能。但这是
内嵌的Servlet容器提供的功能,不是Spring Boot实现的。
与之类似,Spring Boot也没有实现诸如JPA或JMS(Java Message Service,Java消息服务)之
类的企业级Java规范。它的确支持不少企业级Java规范,但是要在Spring里自动配置支持那些特
性的Bean。例如,Spring Boot没有实现JPA,不过它自动配置了某个JPA实现(比如Hibernate)的
Bean,以此支持JPA。
最后,Spring Boot没有引入任何形式的代码生成,而是利用了Spring 4的条件化配置特性,
以及Maven和Gradle提供的传递依赖解析,以此实现Spring应用程序上下文里的自动配置。
简而言之,从本质上来说,Spring Boot就是Spring,它做了那些没有它你自己也会去做的Spring
Bean配置。谢天谢地,幸好有Spring,你不用再写这些样板配置了,可以专注于应用程序的逻辑,
这些才是应用程序独一无二的东西。
现在,你应该对Spring Boot有了大概的认识,是时候构建你的第一个Spring Boot应用程序了。
先从重要的事情开始,该怎么入手呢?
1.1.3 Spring Boot 不是什么
因为Spring Boot实在是太惊艳了,所以过去一年多的时间里有不少和它相关的言论。原先听
到或看到的东西可能给你造成了一些误解,继续学习本书前应该先澄清这些误会。
首先,Spring Boot不是应用服务器。这个误解是这样产生的:Spring Boot可以把Web应用程序变为可自执行的JAR文件,不用部署到传统Java应用服务器里就能在命令行里运行。Spring Boot在应用程序里嵌入了一个Servlet容器(Tomcat、Jetty或Undertow),以此实现这一功能。但这是内嵌的Servlet容器提供的功能,不是Spring Boot实现的。
与之类似,Spring Boot也没有实现诸如JPA或JMS(Java Message Service,Java消息服务)之
类的企业级Java规范。它的确支持不少企业级Java规范,但是要在Spring里自动配置支持那些特
性的Bean。例如,Spring Boot没有实现JPA,不过它自动配置了某个JPA实现(比如Hibernate)的
Bean,以此支持JPA。
最后,Spring Boot没有引入任何形式的代码生成,而是利用了Spring 4的条件化配置特性,
以及Maven和Gradle提供的传递依赖解析,以此实现Spring应用程序上下文里的自动配置。
简而言之,从本质上来说,Spring Boot就是Spring,它做了那些没有它你自己也会去做的Spring
Bean配置。谢天谢地,幸好有Spring,你不用再写这些样板配置了,可以专注于应用程序的逻辑,
这些才是应用程序独一无二的东西。
现在,你应该对Spring Boot有了大概的认识,是时候构建你的第一个Spring Boot应用程序了。
先从重要的事情开始,该怎么入手呢?
1.2 Spring Boot 入门
从根本上来说,Spring Boot的项目只是普通的Spring项目,只是它们正好用到了Spring Boot
的起步依赖和自动配置而已。因此,那些你早已熟悉的从头创建Spring项目的技术或工具,都能
用于Spring Boot项目。然而,还是有一些简便的途径可以用来开启一个新的Spring Boot项目。
最快的方法就是安装Spring Boot CLI,安装后就可以开始写代码,如代码清单1-1,接着通过
CLI来运行就好。
1.2.1 安装 Spring Boot CLI
如前文所述,Spring Boot CLI提供了一种有趣的、不同寻常的Spring应用程序开发方式。第5
章里会详细解释CLI提供的功能。这里先来看看如何安装Spring Boot CLI,这样才能运行代码清
单1-1。
Spring Boot CLI有好几种安装方式。
用下载的分发包进行安装。
用Groovy Environment Manager进行安装。
通过OS X Homebrew进行安装。
使用MacPorts进行安装。
我们分别看一下这几种方式。除此之外,还要了解如何安装Spring Boot CLI的命令行补全支持,
如果你在BASH或zsh shell里使用CLI,这会非常有用(抱歉了,各位Windows用户)。先来看看如
何用分发包手工安装Spring Boot CLI吧。
- 手工安装Spring Boot CLI
安装Spring Boot CLI最直接的方法大约是下载、解压,随后将它的bin目录添加到系统路径里。
你可以从以下两个地址下载分发包:
http://repo.spring.io/release/org/springframework/boot/spring-boot-cli/1.3.0.RELEASE/springboot-cli-1.3.0.RELEASE-bin.zip
http://repo.spring.io/release/org/springframework/boot/spring-boot-cli/1.3.0.RELEASE/springboot-cli-1.3.0.RELEASE-bin.tar.gz
下载完成之后,把它解压到文件系统的任意目录里。在解压后的目录里,你会找到一个bin
目录,其中包含了一个spring.bat脚本(用于Windows环境)和一个spring脚本(用于Unix环境)。
把这个bin目录添加到系统路径里,然后就能使用Spring Boot CLI了。
为Spring Boot建立符号链接 如果是在安装了Unix的机器上使用Spring Boot CLI,最好建立一个指向解压目录的符号链接,然后把这个符号链接添加到系统路径,而不是实际的目录。这样后续升级Spring Boot新版本,或是转换版本,都会很方便,只要重建一下符号链接,指向新版本就好了。你可以先浅尝辄止,看看你所安装的CLI版本号:
$ spring --version
如果一切正常,你会看到安装好的Spring Boot CLI的版本号。
虽然这是手工安装,但一切都很容易,而且不要求你安装任何附加的东西。如果你是Windows
用户,也别无选择,这是唯一的安装方式。但如果你使用的是Unix机器,而且想要稍微自动化一
点的方式,那么可以试试Software Development Kit Manager。
- 使用Software Development Kit Manager进行安装软件开发工具管理包(Software Development Kit Manager,SDKMAN,曾用简称GVM)也能用来安装和管理多版本Spring Boot CLI。使用前,你需要先从http://sdkman.io获取并安装SDKMAN。最简单的安装方式是使用命令行:
$ curl -s get.sdkman.io | bash
跟随输出的指示就能完成SDKMAN的安装。在我的机器上,我在命令行里执行了如下命令:
$ source “/Users/habuma/.sdkman/bin/sdkman-init.sh”
注意,用户不同,这条命令也会有所不同。我的用户目录是/Users/habuma,因此这也是shell
脚本的根路径。你需要根据实际情况稍作调整。一旦安装好了SDKMAN,就可以用下面的方式
来安装Spring Boot CLI了:
$ sdk install springboot
$ spring --version
假设一切正常,你将看到Spring Boot的当前版本号。
如果想升级新版本的Spring Boot CLI,只需安装并使用即可。使用SDKMAN的list命令可
以找到可用的版本:
$ sdk list springboot
list命令列出了所有可用版本,包括已经安装的和正在使用的。从中选择一个进行安装,然后
就可以正常使用。举例来说,要安装Spring Boot CLI 1.3.0.RELEASE,直接使用install命令,
指定版本号:
$ sdk install springboot 1.3.0.RELEASE
这样就会安装一个新版本,随后你会被询问是否将其设置为默认版本。要是你不想把它作为默认
版本,或者想要切换到另一个版本,可以用use命令:
$ sdk use springboot 1.3.0.RELEASE
如果你希望把那个版本作为所有shell的默认版本,可以使用default命令:
$ sdk default springboot 1.3.0.RELEASE
使用SDKMAN来管理Spring Boot CLI有一个好处,你可以便捷地在Spring Boot的不同版本之
间切换。这样你可以在正式发布前试用快照版本(snapshot)、里程碑版本(milestone)和尚未正
式发布的候选版本(release candidate),试用后再切回稳定版本进行其他工作。
- 使用Homebrew进行安装
如果要在OS X的机器上进行开发,你还可以用Homebrew来安装Spring Boot CLI。Homebrew
是OS X的包管理器,用于安装多种不同应用程序和工具。要安装Homebrew,最简单的方法就是
运行安装用的Ruby脚本:
ruby -e “$(curl -fsSL
https://raw.githubusercontent.com/Homebrew/install/ master/install)”
你可以在http://brew.sh看到更多关于Homebrew的内容(还有安装方法)。
要用Homebrew来安装Spring Boot CLI,你需要引入Pivotal的tap①:
$ brew tap pivotal/tap
在有了Pivotal的tap后,就可以像下面这样安装Spring Boot CLI了:
$ brew install springboot
Homebrew会把Spring Boot CLI安装到/usr/local/bin,之后可以直接使用。可以通过检查版本
号来验证安装是否成功:
$ spring --version
这条命令应该会返回刚才安装的Spring Boot版本号。你也可以运行代码清单1-1看看。
- 使用MacPorts进行安装
OS X用户还有另一种安装Spring Boot CLI的方法,即使用MacPorts,这是Mac OS X上另一个
流行的安装工具。要使用MacPorts来安装Spring Boot CLI,必须先安装MacPorts,而MacPorts还
要求安装Xcode。此外,使用不同版本的OS X时,MacPorts的安装步骤也会有所不同。因此我建
议你根据https://www.macports.org/install.php的安装指南来安装MacPorts。
一旦安装好了MacPorts,就可以用以下命令来安装Spring Boot CLI了:
$ sudo port install spring-boot-cli
MacPorts会把Spring Boot CLI安装到/opt/local/share/java/spring-boot-cli,并在/opt/local/bin里
放一个指向其可执行文件的符号链接。在安装MacPorts后,/opt/local/bin这个目录应该就在系统路
径里了。你可以检查版本号来验证安装是否成功:
$ spring --version
这条命令应该会返回刚才安装的Spring Boot的版本号。你也可以运行代码清单1-1,看看效
果如何。
5. 开启命令行补全
Spring Boot CLI为基于CLI的应用程序的运行、打包和测试提供了一套好用的命令。而且,每个命令都有好多选项。要记住这些东西实属不易,命令行补全能帮助记忆怎么使用Spring Boot CLI。
如果用Homebrew安装Spring Boot CLI,那么命令行补全已经安装完毕。但如果是手工安装或者用SDKMAN安装的,那就需要执行脚本或者手工安装。(如果是通过MacPorts安装的Spring Boot CLI,那么你不必考虑命令行补全。)
你可以在Spring Boot CLI安装目录的shell-completion子目录里找到补全脚本。有两个不同的
脚本,一个是针对BASH的,另一个是针对zsh的。要使用BASH的补全脚本,可以在命令行里键
入以下命令(假设安装时用的是SDKMAN):
$ . ~/.sdkman/springboot/current/shell-completion/bash/spring
这样,在当前的shell里就可以使用Spring Boot CLI的补全功能了,但每次开启一个新的shell
都要重新执行一次上面的命令才行。你也可以把这个脚本复制到你的个人或系统脚本目录里,这
个目录的位置在不同的Unix里也会有所不同,可以参考系统文档(或Google)了解细节。
开启了命令行补全之后,在命令行里键入spring命令,然后按Tab键就能看到下一步该输什
么的提示。选中一个命令后,键入–(两个连字符)后再按Tab,就会显示出该命令的选项列表。
如果你在Windows上进行开发,或者没有用BASH或zsh,那就无缘使用这些命令行补全脚本
了。尽管如此,如果你用的是Spring Boot CLI的shell,那一样也有命令补全:
$ spring shell
和BASH、zsh的命令补全脚本(在BASH/zsh shell里执行的)不同,Spring Boot CLI shell会新开一个特别针对Spring Boot的shell,在里面可以执行各种CLI命令,Tab键也能有命令补全。
Spring Boot CLI为Spring Boot提供了快速上手和构建简单原型应用程序的途径。稍后将在第8章中讲到,在正确的生产运行时环境下,它也能用于开发生产应用程序。
尽管如此,与大部分Java项目的开发相比,Spring Boot CLI的流程还是不太符合常规。通常情况下,Java项目用Gradle或Maven这样的工具构建出WAR文件,再把这些文件部署到应用服务器里。即便CLI模型让你感到不太舒服,你仍然可以在传统方式下充分利用大部分Spring Boot特性。①Spring Initializr可以成为你万里长征的第一步。
1.2.2 使用 Spring Initializr 初始化 Spring Boot 项目
万事开头难,你需要设置一个目录结构存放各种项目内容,创建构建文件,并在其中加入各
种依赖。Spring Boot CLI消除了不少设置工作,但如果你更倾向于传统Java项目结构,那你应该
看看Spring Initializr。
Spring Initializr从本质上来说就是一个Web应用程序,它能为你生成Spring Boot项目结构。虽然不能生成应用序代码,但它能为你提供一个基本的项目结构,以及一个用于构建代码的Maven或Gradle构建说明文件。你只需要写应用程序的代码就好了。
Spring Initializr有几种用法。
通过Web界面使用。
通过Spring Tool Suite使用。
通过IntelliJ IDEA使用。
使用Spring Boot CLI使用。
下面分别看看这几种用法,先从Web界面开始。
- 使用Spring Initializr的Web界面
要使用Spring Initializr,最直接的办法就是用浏览器打开http://start.spring.io,你应该能看到类似图1-1的一个表单。
表单的头两个问题是,你想用Maven还是Gradle来构建项目,以及使用Spring Boot的哪个版本。程序默认生成Maven项目,并使用Spring Boot的最新版本(非里程碑和快照版本),但你也可以自由选择其他选项。
表单左侧要你指定项目的一些基本信息。最起码你要提供项目的Group和Artifact,但如果你点击了“Switch to the full version”链接,还可以指定额外的信息,比如版本号和基础包名。这些信息是用来生成Maven的pom.xml文件(或者Gradle的build.gradle文件)的。
表单右侧要你指定项目依赖,最简单的方法就是在文本框里键入依赖的名称。随着你的输入会出现匹配依赖的列表,选中一个(或多个)依赖,选中的依赖就会加入项目。如果找不到你要的依赖,点击“Switch to the full version”就能看到可用依赖的完整列表。
要是你瞄过一眼附录B,就会发现这里的依赖和Spring Boot起步依赖是对应的。实际上,在这里选中依赖,就相当于告诉Initializr把对应的起步依赖加到项目的构建文件里。(第2章会进一步讨论Spring Boot起步依赖。)
填完表单,选好依赖,点击“Generate Project”按钮,Spring Initializr就会为你生成一个项目。浏览器将会以ZIP文件的形式(文件名取决于Artifact字段的内容)把这个项目下载下来。根据你的选择,ZIP文件的内容也会略有不同。不管怎样,ZIP文件都会包含一个极其基础的项目,让你能着手使用Spring Boot开发应用程序。
举例来说,假设你在Spring Initializr里指定了如下信息。
Artifact:myapp
包名:myapp
类型:Gradle项目
依赖:Web和JPA
点击“Generate Project”,就能获得一个名为myapp.zip的ZIP文件。解压后的项目结构同图1-2
类似。
如你所见,项目里基本没有代码,除了几个空目录外,还包含了如下几样东西。
build.gradle:Gradle构建说明文件。如果选择Maven项目,这就会换成pom.xml。 Application.java:一个带有main()方法的类,用于引导启动应用程序。
ApplicationTests.java:一个空的JUnit测试类,它加载了一个使用Spring Boot自动
配置功能的Spring应用程序上下文。
application.properties:一个空的properties文件,你可以根据需要添加配置属性。
在Spring Boot应用程序中,就连空目录都有自己的意义。static目录放置的是Web应用程序的
静态内容(JavaScript、样式表、图片,等等)。还有,稍后你将看到,用于呈现模型数据的模板
会放在templates目录里。
你很可能会把Initializr生成的项目导入IDE。如果你用的IDE是Spring Tool Suite,则可以直接
在IDE里创建项目。下面来看看Spring Tool Suite是怎么创建Spring Boot项目的。
**
以下知识点解析来自于《SpringBoot实战》文档其中的一部分!由于不影响观看,只选取了其中的一部分来展示。
需要完整版的可以点击这里!!暗号博客园,获取!
**