Spring Boot入门(一):搭建Spring Boot项目
从本篇博客开始,我们开始进入Spring Boot的世界,它的出现使Spring的开发变得更加简洁,因此一经推出受到众多程序员的喜爱。
作为Spring Boot系列的第一篇博客,我们先来讲解下如何搭建Spring Boot项目。
如果你直接就使用的是Spring Boot,建议你有时间可以学习下Spring,这样更能体会到Spring Boot带来的便利。
Spring系列博客地址:https://www.cnblogs.com/zwwhnly/category/1407891.html。
1. 搭建Spring Boot项目的2种方式
1.1 方式1:使用官网搭建
首先,在浏览器中,输入 https://start.spring.io/,会看到如下界面:

从上图可以看出,Project默认值是Maven Project,Language默认值是Java,Spring Boot默认版本是2.1.9,因为符合我们的需求,所以这3项我们不做修改。
然后填写项目信息,即Project Metadata项,如下所示:

上图中的Group,可理解为组织,一般为域名反过来,如果域名是zwwhnly.com,这里就填com.zwwhnly。
Artifact,可理解为项目名,比如我这里填写的是springboot-action。
接着选择依赖项,比如要添加Web依赖项,这里可以按关键字搜索Web依赖项,如下所示:

也可以按分类找到Web依赖项,如下所示:

不管以哪种方式添加,最终的结果都是下面这样的:

最后,点击”Generate“按钮生成项目代码:

解压后的代码目录如下图所示:

从图中可以看出,此处生成的其实就是一个简单的基于Maven的项目,你可以使用自己喜欢的开发工具打开该项目,比如IntelliJ IDEA。
1.2 方式2:使用IDEA搭建
首先,打开开发工具IntelliJ IDEA,依次点击菜单File--New--Project打开新建项目对话框,先选中左侧的“Spring Initializr”,然后选择项目要使用的JDK版本,如1.8,点击"Next"按钮:

按照下图中的提示填写好项目信息、打包方式、Java版本等信息,点击“Next"按钮:

选择项目要使用的依赖项(如Spring Web)以及Spring Boot的版本(如2.1.9),点击”Next“按钮:

确认好项目名称和项目要保存的路径,点击“Finish"按钮,如果保存的路径不存在,会提示是否自动创建该目录,点击“OK”即可:


创建好的项目结构图如下所示:

Maven依赖树如下所示:

2. pom.xml讲解
默认生成的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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.9.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.zwwhnly</groupId>
<artifactId>springboot-action</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>springboot-action</name>
<description>Spring Boot Action Code</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
关于pom.xml的整个讲解,可以参考我之前写的博客:Spring入门(四):使用Maven管理Spring项目 ,这里我们只讲解下该文件和之前不同的地方。
第1个值得注意的地方是文件中的parent标签:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.9.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
该标签用于添加Spring Boot的父级依赖,其中spring-boot-starter-parent是一个特殊的starter,它用来提供相关的Maven默认依赖,使用它之后,常用的包依赖可以省去version标签。
举个具体的例子,我们往pom.xml中添加如下依赖:
<dependency>
<groupId>com.rabbitmq</groupId>
<artifactId>amqp-client</artifactId>
</dependency>
和默认的2个依赖一样,我们并未指定该依赖的version版本,但是在Maven的依赖树里,却能看到这3个依赖使用的版本,如下所示:

这就是parent标签中引用spring-boot-starter-parent的作用,我们可以通过以下文件来查看它都提供了哪些依赖的默认版本信息:

在该文件中,我们可以找到spring-boot-starter-web、spring-boot-starter-test、amqp-client指定的版本信息:
<properties>
<rabbit-amqp-client.version>5.4.3</rabbit-amqp-client.version>
</properties>
<dependencies>
<dependency>
<groupId>com.rabbitmq</groupId>
<artifactId>amqp-client</artifactId>
<version>${rabbit-amqp-client.version}</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>2.1.9.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<version>2.1.9.RELEASE</version>
</dependency>
</dependencies>
可以发现,指定的版本正是Maven依赖树上看到的版本信息。
不过可以通过指定version版本来覆盖默认的版本,比如我们将amqp-client的依赖信息修改为:
<dependency>
<groupId>com.rabbitmq</groupId>
<artifactId>amqp-client</artifactId>
<version>5.7.0</version>
</dependency>
此时在Maven依赖树看到的amqp-client的版本就变为了5.7.0:

第2个值得注意的地方是,文件中添加了Spring Boot的编译插件:
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
这里我们也没有指定version,所以使用的是默认的版本2.1.9.RELEASE(和上面使用amqp-client的原理一样):
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>2.1.9.RELEASE</version>
</plugin>
3. 简单演示
找到启动类SpringbootActionApplication(名称一般为ArtifactId+Application),看到默认代码如下:
package com.zwwhnly.springbootaction;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class SpringbootActionApplication {
public static void main(String[] args) {
SpringApplication.run(SpringbootActionApplication.class, args);
}
}
为方便演示,我们暂时在启动类中新增一个Api接口:
package com.zwwhnly.springbootaction;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@SpringBootApplication
public class SpringbootActionApplication {
@RequestMapping("/")
public String index() {
return "Hello Spring Boot";
}
public static void main(String[] args) {
SpringApplication.run(SpringbootActionApplication.class, args);
}
}
在启动类中右键,然后选择运行项目,看到如下信息:

在浏览器中访问http://localhost:8080/,会看到如下信息:

@RestController注解和@RequestMapping注解其实是Spring MVC相关的注解,并不是Spring Boot特有的,关于Spring MVC的相关技术,可以查看以下博客:
4. 关闭Banner
其实刚刚启动项目时我们已经看到了Spring Boot的Banner,那么你不禁要问什么是Spring Boot的Banner呢?
其实就是下图中红色标记的地方:

也许有人会觉得每次启动都显示这些信息并没有实际意义,那么我们如何关闭它呢?
4.1 通过代码关闭
原代码:
public static void main(String[] args) {
SpringApplication.run(SpringbootActionApplication.class, args);
}
修改后:
public static void main(String[] args) {
//SpringApplication.run(SpringbootActionApplication.class, args);
SpringApplication springApplication = new SpringApplication(SpringbootActionApplication.class);
springApplication.setBannerMode(Banner.Mode.OFF);
springApplication.run(args);
}
4.2 通过配置文件关闭
默认情况下,新建的Spring Boot项目都有个空的application.properties配置文件,可以添加如下配置:
spring.main.banner-mode=off
重新启动项目,效果如下图所示:

5. 源码及参考
源码地址:https://github.com/zwwhnly/springboot-action.git,欢迎下载。
汪云飞《Java EE开发的颠覆者:Spring Boot实战》
Spring Boot入门(一):搭建Spring Boot项目的更多相关文章
- Spring Cloud 入门教程 - 搭建配置中心服务
简介 Spring Cloud 提供了一个部署微服务的平台,包括了微服务中常见的组件:配置中心服务, API网关,断路器,服务注册与发现,分布式追溯,OAuth2,消费者驱动合约等.我们不必先知道每个 ...
- Spring Boot入门-快速搭建web项目
Spring Boot 概述: Spring Boot makes it easy to create stand-alone, production-grade Spring based Appli ...
- 《Spring Boot 入门及前后端分离项目实践》系列介绍
课程计划 课程地址点这里 本课程是一个 Spring Boot 技术栈的实战类课程,课程共分为 3 个部分,前面两个部分为基础环境准备和相关概念介绍,第三个部分是 Spring Boot 项目实践开发 ...
- 《Spring Boot 入门及前后端分离项目实践》目录
开篇词:SpringBoot入门及前后端分离项目实践导读 第02课:快速认识 Spring Boot 技术栈 第03课:开发环境搭建 第04课:快速构建 Spring Boot 应用 第05课:Spr ...
- spring boot 入门一 构建spring boot 工程
最近在学习Spring boot,所以想通过博客的形式和大家分享学习的过程,同时也为了更好的学习技术,下面直接进入Spring boot的世界. 简介 spring boot 它的设计目的就是为例简化 ...
- spring Boot 入门--为什么用spring boot
为什么用spring boot 回答这个问题不得不说下spring 假设你受命用Spring开发一个简单的Hello World Web应用程序.你该做什么? 我能想到一些 基本的需要. 一个项目 ...
- Spring boot dubbo+zookeeper 搭建------基于gradle项目的消费端与服务端分离实战
1. Dubbo简介 Dubbo是Alibaba开源的分布式框架,是RPC模式的一种成熟的框架,优点是可以与Spring无缝集成,应用到我们的后台程序中.具体介绍可以查看Dubbo官网. 2. Why ...
- Spring Boot入门篇(基于Spring Boot 2.0系列)
1:概述: Spring Boot是用来简化Spring应用的初始化开发过程. 2:特性: 创建独立的应用(jar|war形式); 需要用到spring-boot-maven-plugin插件 直接嵌 ...
- Spring日记_02之搭建一个新项目
程序 表现层 业务层 持久层 从持久层开始写 总结如何搭建一个项目 1.新建一个Maven项目 2.可能新建之后会有错,右键Deployment Descriptor: note, 选择Generat ...
- 0052 Spring MVC入门--环境搭建--第一个入门示例
Spring MVC是什么 Spring是一个框架,包括了MVC.IoC.AOP等等组件 MVC是一种思想,并非Spring框架独有,全称是Model.View.Controller,即模型.视图.控 ...
随机推荐
- TestNG(六) 忽略测试
package com.course.testng.suite; import org.testng.annotations.Test; public class IgnoreTest { @Test ...
- Linux环境下MySQL的安装、密码策略、忘记密码后的破解及用户授权等。
mysql安装.用户密码.密码策略.授权用户等(mysql5.7版本) 1.mysql安装后相关目录与文件: 主配置文件: /etc/my.cnf 数据库目录: /var/lib/mysql/ 默认端 ...
- Day 2 总结
- .NET Core 获取请求类容(body)
.Net Core 对于body多次读取,开放了一个参数EnableRewind(),该参数在第一次读取body之前开启,之后body信息可以多次读取:core时代取消了之前的stream.posit ...
- [VB.NET Tips]对多行文本的支持
从Visual Studio 2008开始VB.NET支持多行文本. 用法如下: Dim mString As String = <string>我是 一个多 行文本.</strin ...
- Hadoop集群常用的shell命令
Hadoop集群常用的shell命令 Hadoop集群常用的shell命令 查看Hadoop版本 hadoop -version 启动HDFS start-dfs.sh 启动YARN start-ya ...
- 面试并发volatile关键字时,我们应该具备哪些谈资?
提前发现更多精彩内容,请访问 个人博客 提前发现更多精彩内容,请访问 个人博客 提前发现更多精彩内容,请访问 个人博客 写在前面 在 可见性有序性,Happens-before来搞定 文章中,happ ...
- Pots POJ 3414
/* *POJ 3414 *简单模板bfs *编程应该为了方便理解,尽量提供接口 */ #include<cstdio> #include<algorithm> #includ ...
- Web前端开发的应用和前景——web 1.0到web 3.0
Web前端开发的应用和前景--web 1.0到web 3.0 Web1.0:(只读时代) 以静态.单向阅读为主,网站内信息可以直接和其他网站信息进行交互,能通过第三方信息平台同时对多家网站信息进行整合 ...
- 离线服务器安装zabbix
因为机房内的服务器并不是所有都能上外网,所以利用zabbix官方源的安装方法就行不通了,又嫌弃编译安装麻烦,所以这里选择离线RPM包安装zabbix.(如需完整rpm包可以留言与我联系) 下载zabb ...