返回介绍

1.2.2 使用 Spring Initializr 初始化 Spring Boot 项目

发布于 2025-04-21 21:10:06 字数 8838 浏览 0 评论 0 收藏

万事开头难,你需要设置一个目录结构存放各种项目内容,创建构建文件,并在其中加入各种依赖。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 界面开始。

1. 使用 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 文件)的。

{%}

图 1-1 Spring Initializr 是生成空 Spring 项目的 Web 应用程序,可以视为开发过程的第一步

表单右侧要你指定项目依赖,最简单的方法就是在文本框里键入依赖的名称。随着你的输入会出现匹配依赖的列表,选中一个(或多个)依赖,选中的依赖就会加入项目。如果找不到你要的依赖,点击“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 类似。

图 1-2 Initializr 创建的项目,提供了构建 Spring Boot 应用程序所需的基本内容

如你所见,项目里基本没有代码,除了几个空目录外,还包含了如下几样东西。

  • 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 项目的。

2. 在 Spring Tool Suite 里创建 Spring Boot 项目

长久以来,Spring Tool Suite4 一直都是开发 Spring 应用程序的不二之选。从 3.4.0 版本开始,它就集成了 Spring Initializr,这让它成为开始上手 Spring Boot 的好方法。

4 Spring Tool Suite 是 Eclipse IDE 的一个发行版,增加了诸多能辅助 Spring 开发的特性。你可以从 http://spring.io/tools/sts 下载 Spring Tool Suite。

要在 Spring Tool Suite 里创建新的 Spring Boot 应用程序,在 File 菜单里选中 New > Spring Starter Project 菜单项,随后 Spring Tool Suite 会显示一个与图 1-3 相仿的对话框。

图 1-3 Spring Tool Suite 集成了 Spring Initializr,可以在 IDE 里创建并直接导入 Spring Boot 项目

如你所见,这个对话框要求填写的信息和 Spring Initializr 的 Web 界面里是一样的。事实上,你在这里提供的数据会被发送给 Spring Initializr,用于创建项目 ZIP 文件,这和使用 Web 表单是一样的。

如果你想在文件系统上指定项目创建的位置,或者把它加入 IDE 里的特定工作集,就点击 Next 按钮。你会看到第二个对话框,如图 1-4 所示。

图 1-4 Spring Starter Project 对话框的第 2 页可以让你指定在哪里创建项目

Location 指定了文件系统上项目的存放位置。如果你使用 Eclipse 的工作集来组织项目,那么也可以勾上 Add Project to Working Sets 这个复选框,选择一个工作集,这样就能把项目加入指定的工作集了。

Site Info 部分简单描述了将要用来访问 Initializr 的 URL,大多数情况下你都可以忽略这部分内容。然而,如果要部署自己的 Initializr 服务器(从 https://github.com/spring-io/initializr 复制代码即可),你可以在这里设置 Initializr 基础 URL。

点击 Finish 按钮后,项目的生成和导入过程就开始了。你必须认识到一点,Spring Tool Suite 的 Spring Starter Project 对话框,其实是把项目生成的工作委托给 http://start.spring.io 上的 Spring Initializr 来做的,因此必须联网才能使用这一功能。

一旦把项目导入工作空间,应用程序就可以开发了。在开发的过程中,你会发现 Spring Tool Suite 针对 Spring Boot 还有一些锦上添花的功能。比如,可以在 Run 菜单里选中 Run As > Spring Boot Application,在嵌入式服务器里运行你的应用程序。

注意,Spring Tool Suite 是通过 REST API 与 Initializr 交互的,因此只有连上 Initializr 它才能正常工作。如果你的开发机离线,或者 Initializr 被防火墙阻断了,那么 Spring Tool Suite 的 Spring Starter Project 向导是无法使用的。

3. 在 IntelliJ IDEA 里创建 Spring Boot 项目

IntelliJ IDEA 是非常流行的 IDE,IntelliJ IDEA 14.1 已经支持 Spring Boot 了!5

5 你可以从 https://www.jetbrains.com/idea/ 获取 IntelliJ IDEA。它是一款商业 IDE,这意味着你需要付费使用。但是你可以下载试用版,它对开源项目免费。

要在 IntelliJ IDEA 里创建新的 Spring Boot 应用程序,在 File 菜单里选择 New > Project。你会看到几屏内容(图 1-5 是第一屏),问的问题和 Initializr 的 Web 应用程序以及 Spring Tool Suite 类似。

{%}

图 1-5 IntelliJ IDEA 里 Spring Boot 初始化向导的第一屏

在首先显示的这一屏中,在左侧项目选择里选中 Spring Initializr,随后会提示你选择一个 Project SDK(基本上就是这个项目要用的 Java SDK),同时选择 Initializr Web 服务的位置。除非你在使用自己的 Initializr,否则应该不做任何修改直接点 Next 按钮,之后就到了图 1-6。

{%}

图 1-6 在 IntelliJ IDEA 的 Spring Boot 初始化向导里指定项目信息

Spring Boot 初始化向导的第二屏要求你提供项目的一些基本信息,比如项目名称、Maven Group 和 Artifact、Java 版本,以及你是想用 Maven 还是 Gradle 来构建项目。描述好项目信息之后,点击 Next 按钮就能看到第三屏了,如图 1-7 所示。

{%}

图 1-7 在 IntelliJ IDEA 的 Spring Boot 初始化向导里选择项目依赖

第二屏向你询问项目的基本信息,第三屏就开始问你要往项目里添加什么依赖了。和之前一样,屏幕里的复选框和 Spring Boot 起步依赖是对应的。选完之后点击 Next 就到了向导的最后一屏,如图 1-8 所示。

{%}

图 1-8 IntelliJ IDEA 的 Spring Boot 初始化向导的最后一屏

最后一屏问你项目叫什么名字,还有要在哪里创建项目。一切准备就绪之后,点击 Finish 按钮,就能在 IDE 里得到一个空的 Spring Boot 项目了。

4. 在 Spring Boot CLI 里使用 Initializr

如前文所述,如果你想仅仅写代码就完成 Spring 应用程序的开发,那么 Spring Boot CLI 是个不错的选择。然而,Spring Boot CLI 的功能还不限于此,它有一些命令可以帮你使用 Initializr,通过它上手开发更传统的 Java 项目。

Spring Boot CLI 包含了一个 init 命令,可以作为 Initializr 的客户端界面。 init 命令最简单的用法就是创建 Spring Boot 项目的基线:

$ spring init

在和 Initializr 的 Web 应用程序通信后, init 命令会下载一个 demo.zip 文件。解压后你会看到一个典型的项目结构,包含一个 Maven 的 pom.xml 构建描述文件。Maven 的构建说明只包含最基本的内容,即只有 Spring Boot 基线和测试起步依赖。你可能会想要更多的东西。

假设你想要构建一个 Web 应用程序,其中使用 JPA 实现数据持久化,使用 Spring Security 进行安全加固,可以用 --dependencies-d 来指定那些初始依赖:

$ spring init -dweb,jpa,security

这条命令会下载一个 demo.zip 文件,包含与之前一样的项目结构,但在 pom.xml 里增加了 Spring Boot 的 Web、jpa 和 security 起步依赖。请注意,在 -d 和依赖之间不能加空格,否则就变成了下载一个 ZIP 文件,文件名是 web,jpa,security。

现在,假设你想用 Gradle 来构建项目。没问题,用 --build 参数将 Gradle 指定为构建类型:

$ spring init -dweb,jpa,security --build gradle

默认情况下,无论是 Maven 还是 Gradle 的构建说明都会产生一个可执行 JAR 文件。但如果你想要一个 WAR 文件,那么可以通过 --packaging 或者 -p 参数进行说明:

$ spring init -dweb,jpa,security --build gradle -p war

到目前为止, init 命令只用来下载 ZIP 文件。如果你想让 CLI 帮你解压那个 ZIP 文件,可以指定一个用于解压的目录:

$ spring init -dweb,jpa,security --build gradle -p war myapp

此处的最后一个参数说明你希望把项目解压到 myapp 目录里去。

此外,如果你希望 CLI 把生成的项目解压到当前目录,可以使用 --extract 或者 -x 参数:

$ spring init -dweb,jpa,security --build gradle -p jar -x

init 命令还有不少其他参数,包括基于 Groovy 构建项目的参数、指定用 Java 版本编译的参数,还有选择构建依赖的 Spring Boot 版本的参数。可以通过 help 命令了解所有参数的情况:

$ spring help init

你也可以查看那些参数都有哪些可选项,为 init 命令带上 --list-l 参数就可以了:

$ spring init -l

你一定注意到了,尽管 spring init -l 列出了一些 Initializr 支持的参数,但并非所有参数都能直接为 Spring Boot CLI 的 init 命令所支持。举例来说,用 CLI 初始化项目时,你不能指定根包的名字,它默认为 demo。 spring help init 会告诉你 CLI 的 init 命令都支持哪些参数。

无论你是用 Initializr 的 Web 界面,在 Spring Tool Suite 里创建项目,还是用 Spring Boot CLI 来初始化项目,Spring Boot Initializr 创建出来的项目都有相似的项目布局,和你之前开发过的 Java 项目没什么不同。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。