在准备好开发环境之后,你肯定有这样的疑惑,我如何新建一个项目?搁在以前,一般是通过IDE的“New Project”菜单,跟着引导一步一步来创建项目。现在Spring Boot提供了一种更加统一的方式,使用Spring Initializr( start.spring.io )。
Spring Initializr可以根据你设置的选项,生成一个新的项目,并下载到本地,你导入IDE就可以开发了。页面上第一个选项是选择构建工具,使用Maven还是Gradle。第二项选择语言,大部分用的都是Java。第三项选择使用哪个Spring Boot版本,一般来说用的都是最新的正式版,本文发布时,版本还是2.1.5。如果你需要的版本上面没有列出来,可以先生成个项目,然后再在配置文件里改成你需要的版本。
接下来需要填写Group ID和Artifact ID,你可能会对这俩东西比较困惑。Group ID可以填你的公司的域名反写,跟Java包命名类似,Artifact ID可以是当前项目的名称,比如我要写个工具类项目,我的域名是fookwood.com,那么我会把Group ID设置为com.fookwood,把Artifact ID设置为tools。结合项目的版本号,这三者可以直接定位到一个项目,在Maven中,groupId:artifactId:version可以称为一个坐标,在中央仓库中,所有的库都有唯一的坐标。Gradle中也支持设置坐标。
如果你点击图片中的“Options”,可以设置是用打jar包独立运行,还是打war包放到Tomcat或其他容器中运行。你还可以设置项目中Java类的包名,以及所使用的Java的版本。
最后一项任务就是添加依赖了,鉴于大部分人使用Spring Boot都是为了开发web项目,为了简便,只添加一个依赖,Spring Web Starter。
Spring Web Starter包含了Spring MVC,用来处理网络请求的;还包含了内置Tomcat,这是jar包得以独立运行的关键;另外还包含了JSON的支持,hibernate-validator和annotation-api的支持。
至此,你就可以点击Spring Initializr底部的“Generate the project”按钮来下载你配置好的项目了,你下载到的会是一个zip压缩包,解压即可,开箱即用。
按理说,接下来我该演示如何把项目导入IDE了,我偏不。
Spring Initializr还提供了接口,如果你在命令行里运行 curl https://start.spring.io
会得到一份指南,告诉你如何通过一个命令生成项目,在网页上可以配置的选项,在命令行里也可以配置
有了接口,你就不必再跑去打开网站了。但是我相信,你一定觉得这种用命令行的方式非常不便,明明点几下就行了,为何还要让我搞清楚那么多参数怎么用?幸运的是,IntelliJ IDEA已经通过这个接口集成了Spring Initializr(当然STS和Netbeans也集成了),你可以通过“new” -> “project”来新建项目:
接下来是配置项目信息和选择项目依赖
点击上图中Next之后,Spring Initializr的任务就完成了,接下来选择项目目录:
完成之后,IDEA会把项目的zip包下载下来,解压到上图你指定的目录里,然后自动地打开项目(也可以说是导入项目),打开的时候会有提示框:
如果你知道图中的这些东西是干嘛的,可以改改,不知道就别管,直接点OK。
至此,你的项目就算创建完了,也在IDE中打开了,在你运行项目之前,要先看看项目的目录里都有啥:
最核心的就是src目录,src/main/java里面放置你所有的Java代码,src/main/resources里面放你的css,js,模板文件,配置文件等等,其中application.properties是Spring Boot的核心配置文件,你会频繁地使用它。src/test/java里面都是测试相关的代码。
build.gradle是Gradle的配置文件,你最常用到它的场景就是修改依赖,比如你想引入Guava,添加一行代码就行,这也是Gradle比Maven清晰简洁的地方:
如果你以后项目中会涉及多个project,那你可能需要使用settings.gradle。
gradle文件夹,gradlew和gradlew.bat文件都是和Gradle Wrapper(简称wrapper)相关的。考虑到很多人获取到项目之后还得再去下载Gradle,Gradle官方提供了wrapper,意在避免用户再去安装,如果你在项目根目录执行 ./gradlew tasks
, 它会自动下载Gradle并运行,如果之前已经下载过了,那就直接展示出所有可以执行的任务。这和直接执行 gradle tasks
的效果是差不多的,只不过后者是你系统里的命令,前者是自动下载的,具体下载的是哪个版本,你可以查看gradle文件夹。
其实这一篇我本来是想写创建和运行的,但是写着写着感觉东西越来越多,那就干脆只写创建项目吧。总体来讲,这个过程并没有什么复杂的,你一步一步做下来是可以完成的,如果你遇到一些小细节,跟我描述的不一样,可以留言,我来解答。