springboot 本质上还是一个maven项目,三种springboot创建方式
环境准备
IDE:IntelliJ IDEA 2019.3
数据库:MySQL 5.7
Spring-Boot:2.2.2
Java开发环境:JDK1.8
Maven: 3.5.4 (官方声明Springboot 1.4.4版本需要Maven 3.2+)
本地仓库:后续提供网盘地址
1. 第一种SpringBoot创建方式-在线创建
首先打开 https://start.spring.io
这个网站,如下:
① 通过网站快速创建springboot项目
这里要配置的按顺序分别如下:
- 项目构建工具是 Maven 还是 Gradle ?我见到有人用 Gradle 做 Java 后端项目,但是整体感觉 Gradle 在 Java 后端中使用的还是比较少,Gradle 在 Android 中使用较多,Java 后端,目前来看还是 Maven 为主,因此这里选择第一项。
- 开发语言,选择 Java
- Spring Boot 版本,可以看到,目前最新的稳定版是 2.4.1 ,这里我们就是用最新版,先选着后面再替换,如果没有这个版本选其他版本一样
- 既然是 Maven 工程,当然要有项目坐标,项目描述等信息了,另外这里还让输入了包名,因为创建成功后会自动创建启动类。
- Packing 表示项目要打包成 jar 包还是 war 包,Spring Boot 的一大优势就是内嵌了 Servlet 容器,打成 jar 包后可以直接运行,所以这里建议打包成 jar 包,当然,开发者根据实际情况也可以选择 war 包。
- 然后选选择构建的 JDK 版本,这里我使用的是JDK8
- 最后是选择所需要的依赖,输入关键字如 web ,会有相关的提示,这里我就先加入 web 依赖。
所有的事情全部完成后,点击最下面的 Generate Project
按钮,或者点击 Alt+Enter
按键,此时会自动下载项目,将下载下来的项目解压,然后用 IntelliJ IDEA 或者 Eclipse 打开即可进行开发。
② 将创建的项目放入任意盘符,进行解压
③ 打开idea,在idea中打开解压的项目
④ 修改springboot版本
项目打开后要稍等一会,加载速度比较慢,加载好后将pom.xml中红线标记部分修改成2.2.2.RELEASE,这里我使用的是springboot 2.2.2.RELEASE版本
2. 第二种SpringBoot创建方式-使用开发工具创建
如果觉得上面的步骤过于繁琐,我们可以使用 IDE 来创建,帝哥这里以 IntelliJ IDEA为例,需要注意的是,IntelliJ IDEA 只有 ultimate 版才有直接创建 Spring Boot 项目的功能,社区版是没有此项功能的。
-
Community:
社区版,免费,但是功能有限制,Android Studio就是基于这个版本定制的。
http://idea-intellij.com/intellij-community/
-
Ultimate:
终极版,收费,功能无限制。
http://idea-intellij.com/intellij-ultimate/
-
EAP:
终极版的免费版,免费,功能无限制,但是每隔30天要重装一次。
http://idea-intellij.com/intellij-eap/
① IntelliJ IDEA 创建
首先在创建项目时选择 Spring Initializr,如下图:
然后点击 Next ,填入 Maven 项目的基本信息,如下
再接下来选择需要添加的依赖,如下图:
勾选完成后,点击 Next 完成项目的创建。
3. 第三种SpringBoot创建方式-Maven 创建
上面提到的几种方式,实际上都借助了 https://start.spring.io/
这个网站,帝哥记得在 2017 年的时候,这个网站还不是很稳定,经常发生项目创建失败的情况,从2018年开始,项目创建失败就很少遇到了,不过有一些读者偶尔还是会遇到这个问题,他们会在微信上问帝哥这个问题要怎么处理?我一般给的建议就是直接使用 Maven 来创建项目。步骤如下:
① 创建一个普通的Maven项目
注意这里不用选择项目骨架(如果大伙是做练习的话,也可以去尝试选择一下,这里大概有十来个 Spring Boot 相关的项目骨架),直接点击 Next 下一步.
② 填写Maven项目基本信息
然后点击 Finish完成项目的创建。
③ 添加SpringBoot的起步依赖
SpringBoot要求,项目要继承SpringBoot的起步依赖spring-boot-starter-parent
<!--提供了springboot统一的依赖管理和插件管理-->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.2.RELEASE</version>
</parent>
SpringBoot要集成SpringMVC进行Controller的开发,所以项目要导入web的启动依赖
<dependencies>
<!-- web 启动器,支持全栈式Web开发,包括Tomcat和spring-webmvc。 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
最终的pom.xml效果如下:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<!--提供了springboot统一的依赖管理和插件管理-->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.2.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.xinyixuetang</groupId>
<artifactId>springboot_demo</artifactId>
<version>1.0-SNAPSHOT</version>
<!-- 设置maven项目为war -->
<packaging>war</packaging>
<dependencies>
<!-- web 启动器,支持全栈式Web开发,包括Tomcat和spring-webmvc。 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<!-- 添加了该插件之后,当运行“mvn package”进行打包时,会打包成一个可以直接运行的 JAR 文件,使用“java -jar”命令就可以直接运行。-->
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
④ 编写SpringBoot启动类
再在 java 目录下创建包 com.xinyixuetang,包中创建一个名为ApplicationMain 的启动类,执行这里的 main 方法就可以启动一个 Spring Boot 工程了,如下:
package com.xinyixuetang;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
//SpringBootApplication注解标记当前类为SpringBoot的引导启动类
@SpringBootApplication
public class ApplicationMain {
public static void main(String[] args) {
/*
SpringApplication.run一共做了两件事
创建SpringApplication对象;在对象初始化时保存事件监听器,容器初始化类以及判断是否为web应用,保存包含main方法的主配置类。
调用run方法;准备spring的上下文,完成容器的初始化,创建,加载等。会在不同的时机触发监听器的不同事件。
*/
SpringApplication.run(ApplicationMain.class,args);
}
}
⑤ 编写Controller
在启动类ApplicationMain 同级包或者子级包中创建HelloController,在java目录创建包 com.xinyixuetang.controller 包中创建一个名为HelloController的控制类,如下:
package com.xinyixuetang.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller
public class HelloController {
@RequestMapping("hello")
@ResponseBody
public String hello(){
return "hello springboot";
}
}
⑥ 测试
执行SpringBoot启动类的主方法,控制台打印日志如下:
. ____ _ __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v2.2.2.RELEASE)
2020-12-09 18:26:38.788 INFO 47136 --- [ main] com.bw.ApplicationMain : Starting ApplicationMain on LAPTOP-QOPMUIA9 with PID 47136 (E:\2020\1809a\ideaworkspace\springboot_demo3\target\classes started by wanghd in E:\2020\1809a\ideaworkspace\springboot_demo3)
2020-12-09 18:26:38.794 INFO 47136 --- [ main] com.bw.ApplicationMain : No active profile set, falling back to default profiles: default
2020-12-09 18:26:39.828 INFO 47136 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port(s): 8080 (http)
... ... ...
2020-12-09 18:26:40.182 INFO 47136 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8080 (http) with context path ''
2020-12-09 18:26:40.185 INFO 47136 --- [ main] com.bw.ApplicationMain : Started ApplicationMain in 1.985 seconds (JVM running for 5.578)
通过日志发现,Tomcat started on port(s): 8080 (http) with context path ‘’
tomcat已经起步,端口监听8080,web应用的虚拟工程名称为空
打开浏览器访问url地址为:http://localhost:8080/hello
4. 项目结构
① 使用Spring Initializr工具创建出来的项目结构大致如下图:
对于我们来说,src 是最熟悉的, Java 代码和配置文件写在这里,test 目录用来做测试,pom.xml 是 Maven 的坐标文件,就这几个。
② 使用Maven创建出来的项目结构大致如下图:
修改后效果