创建Spring Boot项目的几种方式总结

Posted chansblogs

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了创建Spring Boot项目的几种方式总结相关的知识,希望对你有一定的参考价值。

一、我们可以使用Spring Initializr来创建SpringBoot项目。

Spring Initializr从本质上来说就是一个Web应用程序,它能为你生成Spring Boot项目结构。虽然不能生成应用程序代码,但它能为你提供一个基本的项目结构,以及一个用于构建代码的Maven或Gradle构建说明文件。你只需要写应用程序的代码就好了。
 
Spring Initializr有几种用法。
  1. 通过Web界面使用。
  2. 通过Spring Tool Suite使用。
  3. 通过IntelliJ IDEA使用。
  4. 使用Spring Boot CLI使用。
  5. 补充: 单纯地使用gradle或者maven来构建。
 
1. 使用Spring Initializr的Web界面
要使用Spring Initializr,最直接的办法就是用浏览器打开http://start.spring.io,你应该能看到类似下图的一个表单:
 技术分享图片在这里你可以选择使用Maven或者Gradle来构建项目,以及是基于Java还是Groovy,以及Spring Boot的版本,在下面我们可以设置项目的Group以及Artifact,在右边Dependencies里我们可以添加所需要的依赖,输入我们所需要的依赖名称会出现匹配,若没有找到我们需要的依赖,可以点击下面的 "Switch to the full version" 就能看到可用依赖的完整列表。这些信息是用来生成Maven的pom.xml文件(或者Gradle的build.gradle文件)的。
 
填完表单,选好依赖,点击“Generate Project”按钮,Spring Initializr就会为你生成一个项目。浏览器将会以ZIP文件的形式(文件名取决于Artifact字段的内容)把这个项目下载下来。根据你的选择,ZIP文件的内容也会略有不同。不管怎样,ZIP文件都会包含一个极其基础的项目,让你能着手使用Spring Boot开发应用程序。
 
2. 在Spring Tool Suite里创建Spring Boot项目
长久以来,Spring Tool Suite①一直都是开发Spring应用程序的不二之选。从3.4.0版本开始,它就集成了Spring Initializr,这让它成为开始上手Spring Boot的好方法。要在Spring Tool Suite里创建新的Spring Boot应用程序,在File菜单里选中New > Spring Starter Project菜单项,随后Spring Tool Suite会显示一个与下图相仿的对话框。
如你所见,这个对话框要求填写的信息和Spring Initializr的Web界面里是一样的。事实上,你在这里提供的数据会被发送给Spring Initializr,用于创建项目ZIP文件,这和使用Web表单是一样的。
 技术分享图片
 
如果你想在文件系统上指定项目创建的位置,或者把它加入IDE里的特定工作集,就点击Next按钮。你会看到第二个对话框,下如图所示:
技术分享图片
 
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了。
要在IntelliJ IDEA里创建新的Spring Boot应用程序,在File菜单里选择New > Project。你会看到几屏内容(如下图),问的问题和Initializr的Web应用程序以及Spring Tool Suite类似。
技术分享图片
技术分享图片
 
Spring Boot初始化向导的第二屏要求你提供项目的一些基本信息,比如项目名称、Maven Group和Artifact、Java版本,以及你是想用Maven还是Gradle来构建项目。描述好项目信息之后,
点击Next按钮就能看到第三屏了,如下图所示:技术分享图片
 
第二屏向你询问项目的基本信息,第三屏就开始问你要往项目里添加什么依赖了。和之前一样,屏幕里的复选框和Spring Boot起步依赖是对应的。选完之后点击Next就到了向导的最后一屏:
技术分享图片最后一屏问你项目叫什么名字,还有要在哪里创建项目。一切准备就绪之后,点击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命令都支持哪些参数。
 
 
5.补充:单纯地使用gradle(或maven)来构建Spring Boot项目
该方式适用于在使用Spring Initializr构建Spring Boot项目时连接 https://start.spring.io (换成http协议) 异常报错的情况。
例如:
技术分享图片
 
这里使用IDEA创建Gradle项目作为示例。
 
首先我们创建一个Gradle项目: File->New->Project->Gradle
技术分享图片
 
我们点击Next,然后填入GroupId,ArtifactId以及Version号,点击Next,
技术分享图片
 
这里需要注意:
1.不推荐勾选Use auto-import;
2.因为默认从网上下载gradle,非常的慢,所以这里建议勾选: Use local gradle distribution,填好本地的gradle home技术分享图片

 

之后在NewProject里面填好项目名称以及路径,点击Finish即可。
技术分享图片
 
到这里生成了一个Gradle项目,还不是Spring Boot项目,所以我们需要写下Spring Boot的一些基本配置,这里给大家贴一下我的 gradle.build 文件:
buildscript {
    repositories {
        maven {
            url = ‘http://maven.aliyun.com/nexus/content/groups/public/‘
        }
    }
    dependencies {
        classpath(‘org.springframework.boot:spring-boot-gradle-plugin:2.0.3.RELEASE‘)
    }
}

apply plugin: ‘java‘
apply plugin: ‘idea‘
apply plugin: ‘org.springframework.boot‘
apply plugin: ‘io.spring.dependency-management‘

group = ‘com.springboot‘
version = ‘1.0.0.0‘

sourceCompatibility = 1.8
targetCompatibility = 1.8

repositories {
    maven {
        url = ‘http://maven.aliyun.com/nexus/content/groups/public/‘
    }
}

dependencies {
    compile(‘org.springframework.boot:spring-boot-starter-web‘)
    testCompile(‘org.springframework.boot:spring-boot-starter-test‘)
    testCompile group: ‘junit‘, name: ‘junit‘, version: ‘4.12‘
}
 
(这里使用的阿里云的镜像,推荐使用,下载依赖的速度非常之快,原配置的速度太慢太慢)
 
之后在右边Tool Buttons栏里面选择Gradle:
技术分享图片

 

(若没有则可以在View里面选择Tool Buttons即可展开)

然后点击refresh刷新按钮。
技术分享图片
 
之后我们就会生成Spring Boot项目的目录结构:
src
  |-- main
           |-- java
                    |--com.springboot
                                       |---- SpringBootDemoApplication
           |----resources
  |----test
 
完成。
 
二、小结
无论你是用Initializr的Web界面,在Spring Tool Suite里创建项目,还是用Spring Boot CLI来初始化项目,Spring Boot Initializr创建出来的项目都有相似的项目布局,和你之前开发过的Java项目没什么不同

 

以上是关于创建Spring Boot项目的几种方式总结的主要内容,如果未能解决你的问题,请参考以下文章

Spring Boot 启动时自动执行代码的几种方式。。

构建第一个spring boot应用之项目启动运行的几种方式

Spring Boot 项目启动指定 HTTP 端口的几种方式

Spring Boot 项目启动指定 HTTP 端口的几种方式

Spring Boot 项目启动指定 HTTP 端口的几种方式

一张图,理顺 Spring Boot应用在启动阶段执行代码的几种方式