Spring Boot 2从入门到入坟 | 基础入门篇:Hello World入门

在这篇文章中,我们就来编写一个Spring Boot的Hello World入门程序,来体会一下Spring Boot的用法。

系统要求

Spring Boot对我们的系统是有要求的,即Java必须是8及以上版本,以及Maven必须是3.3及以上版本。当然,这也在Spring Boot的官方文档里面说的很清楚了,下面会给出Spring Boot官方文档的地址。

进来Getting Started(即快速入门)这一章节中,然后你就能在2. System Requirements这一小节中看到Spring Boot对我们系统的要求了,如下图所示。

在这里插入图片描述

可以看到,当前Spring Boot 2.4.5版本要求Java必须是8及以上版本,另外,Maven也必须是3.3及以上版本。

当然了,我们也应该来检查一下本地环境是不是没有问题了,怎么检查呢?很简单,在命令行窗口中依次输入java -versionmvn -v命令来分别查看一下Java和Maven使用的版本,如下图所示。

在这里插入图片描述

可以看到笔者这儿使用的Java版本是1.8.0_181,Maven版本是3.6.2,这是完全没有问题的。

在我们来正式编写Spring Boot的Hello World入门程序之前,咱们还得来对Maven来做一个统一的设置,找到Maven的settings.xml全局配置文件,然后打开,添加上如下两个配置。

<mirrors>
	<mirror>
		<id>nexus-aliyun</id>
		<mirrorOf>central</mirrorOf>
		<name>Nexus aliyun</name>
		<url>http://maven.aliyun.com/nexus/content/groups/public</url>
	</mirror>
</mirrors>

<profiles>
	<profile>
		<id>jdk-1.8</id>
		<activation>
			<activeByDefault>true</activeByDefault>
			<jdk>1.8</jdk>
		</activation>
		<properties>
			<maven.compiler.source>1.8</maven.compiler.source>
			<maven.compiler.target>1.8</maven.compiler.target>
			<maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
			<maven.compiler.encoding>utf-8</maven.compiler.encoding>
		</properties>
	</profile>
</profiles>

第一个配置说的是让Maven使用阿里云的镜像,这样我们以后下载依赖就很快了;第二个配置说的是让Maven使用jdk 1.8来进行项目编译,这样就会避免我们项目开发中遇到的一些问题了。

当然了,如果你以前就在settings.xml全局配置文件里面配置过镜像或者<profiles>,那么你也可以对照着上面的两个配置来进行修改哟;如果没配过,那么就直接复制粘贴。OK,接下来,咱们就要来正式编写一个Spring Boot的Hello World入门程序了。

Hello World入门小程序

首先,我们来看一下需求,需求很简单,就是我们通过浏览器发送一个/hello请求,服务器最终给浏览器响应一个字符串,例如Hello, Spring Boot 2!

明确需求之后,我们知道这是一个典型的Web开发,如果我们还是用以前原生Spring的方式来开发,那么我们需要创建一个项目,然后导入Spring、Spring MVC等一大堆的依赖,导进来以后,还得再来编写Spring、Spring MVC的配置文件,除此之外,还得整合它俩,以及整合它俩时还要编写它们之间的整合配置,这些弄完以后,我们才能来编写咱们的代码,最终,将我们的整个应用再来部署到Tomcat服务器上,当然了,我们也可以在IDEA中整合上Tomcat服务器,再来启动运行咱们的整个应用。但是你不觉得这样做,都特别麻烦吗?

因此,咱们就来看一下Spring Boot是怎么做的。不妨先参照一下Spring Boot的官方文档,还是进入到Getting Started(即快速入门)这一章节中,进来之后,展开4. Developing Your First Spring Boot Application这一小节,你就能知道如何来开发咱们的第一个Spring Boot应用了。

在这里插入图片描述

创建maven工程

首先,第一步是Creating the POM,即创建一个maven工程。那么如何使用IDEA来创建一个maven工程呢?大家只要遵循以下步骤即可。

(1)大家在创建一个maven工程之前,一定要确认你自个的IDEA里面是否整合了maven。那么如何确认呢?首先,进入IDEA的设置界面中,并依次展开Build, Execution, DeploymentBuild Tools这两项,这时你会看到Maven,选中它之后,可以看到如下图所示的界面。

在这里插入图片描述

从以上界面中,可以看到在笔者本人的IDEA里面已经整合了自己的maven了,而且用的也是笔者自己的settings.xml全局配置文件。如果你的IDEA里面没有整合你自己的maven,那么请你重新配置一下。

(2)现在正式开始来创建一个maven工程。首先,点击菜单栏中的File菜单,并在其下拉列表中选中New第一项,然后再在弹出的下拉列表中选中Project...这一项,如下图所示。

在这里插入图片描述

这时,会弹出如下对话框。

在这里插入图片描述

接着,在以上对话框中的左侧选中Maven这一项,并直接点击Next按钮。

在这里插入图片描述

这时,应该会弹出如下对话框。

在这里插入图片描述

紧接着,在以上对话框中展开Artifact Coordinates,并依次在GroupIdArtifactId这两项中填写相应的内容,如下图所示。

在这里插入图片描述

最后,点击Finish按钮,发现弹出了如下对话框,当然了,你在创建maven工程时,有可能不会看到这个对话框,之所以笔者这儿会出现这个对话框,是因为笔者之前已经创建过一个工程,看到HelloLiayun工程没?

在这里插入图片描述

那在这里,笔者就选择还是在IDEA的以上窗口中打开刚刚创建的maven工程了,即点击以上对话框中的This Window按钮。这时,应该就能看到创建的maven工程了,如下图所示。

在这里插入图片描述

温馨提示:创建maven工程,其实还有更快的创建方式,不过这得等到后面再说了。

maven工程创建好了以后,接下来该怎么做呢?我们不妨再来参照一下Spring Boot的官方文档,在4.1. Creating the POM这一小节中,我们发现如果想要使用Spring Boot来进行开发,那么在咱们maven工程的pom.xml文件里面必须导入如下一个父工程。

在这里插入图片描述

导进来之后,我们能看到咱们使用的Spring Boot是2.4.5这个版本的,而且还能看到导入的父工程的名字叫做spring-boot-starter-parent,这是一个固定写法哟😀

在这里插入图片描述

至此,我们的第一步就算是做完了,即创建了一个maven工程,并让它使用了Spring Boot。

引入依赖

第二步,由于我们现在是在开发一个Web应用,所以应该引入如下依赖。

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
</dependencies>

如果要是以前,那么我们还得导入Spring、Spring MVC等一大堆的依赖,而现在我们只需要引入一个依赖即可,这个依赖就是spring-boot-starter-web,我们称之为Web的场景启动器,也就是说,如果你现在想要开发Web场景的应用,那么把这个依赖引入过来就行了。现在我们正是在开发Web场景的应用,所以我们只须把Web场景启动器这个依赖引入进来就行。

在这里插入图片描述

以上依赖引入进来之后,我们不妨展开maven工程下的External Libraries目录,会发现Web场景开发里面几乎用到的所有jar包全部都给导入进来了,如下图所示。

在这里插入图片描述

包括与Spring MVC相关的、与Spring核心容器相关的以及日志相关的一大堆jar包等等都默认导入进来了。所以,我们现在使用Spring Boot来做Web开发,只需要导入一个依赖就行了。

创建主程序

第三步,人家官方文档是说Writing the Code,即直接编写代码,如下图所示。

在这里插入图片描述

然后,我们来看看人家官方文档是怎么写的,人家官方文档也为我们写了一个示例类,并且在该示例类中还编写了一个方法,该方法是用于处理/请求的,处理完之后会返回一个Hello World!字符串,明眼一看就知道这是Spring MVC的写法。除此之外,该示例类中还编写了一个主方法。所以,接下来我也会仿照着该示例类来编写,以解决一开始提出来的那个需求。

首先,创建一个类,例如MainApplication,我们把该类称为主程序,当然了,这个类名你是可以随便起的。

package com.meimeixia.boot;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

/**
 * @author liayun
 * @create 2021-04-19 4:02
 */
@SpringBootApplication
public class MainApplication {

    public static void main(String[] args) {
        SpringApplication.run(MainApplication.class, args); // 这是固定写法哟
    }

}

可以看到,我们在该类上标注了一个@SpringBootApplication注解,这个注解的作用是来告诉Spring Boot,咱们编写的类是一个Spring Boot应用。记住,我们必须用这个注解来告诉Spring Boot这是一个Spring Boot应用。还有,我们可以把标注了@SpringBootApplication注解的类称之为主程序类,主程序类相当于是我们所有启动的入口哟😀。

接下来,我们就要编写我们的业务逻辑了。也就是说,主程序类写好了以后,我们无需过多的配置,以前怎么编写业务逻辑,将来还怎么编写业务逻辑。

编写业务

我们依旧还是在com.meimeixia.boot包下创建一个Controller,例如HelloController,这不还是Spring MVC的那一套东西吗,你不会连这个都不知道吧😘

在这里插入图片描述

由于以上handle01方法返回的结果最终是要以字符串的方式写给浏览器,所以我们会在这个方法上加一个@ResponseBody注解。未来的话,咱们这个处理器(即HelloController)会处理非常多的请求,可能都要给浏览器返回字符串,因此我们就需要把@ResponseBody注解写在类上了,不妨就这样做看看。

package com.meimeixia.boot.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

/**
 * @author liayun
 * @create 2021-04-19 4:24
 */
@Controller
@ResponseBody
public class HelloController {

    @RequestMapping("/hello")
    public String handle01() {
        return "Hello, Spring Boot 2!";
    }

}

这就表示咱们这个处理器(即HelloController)中的每一个方法,返回的结果都是直接写给浏览器,而不是跳转到某个页面中去了。但是,你不觉得在类上老是标注@Controller和@ResponseBody这两个注解太麻烦了吗?其实,Spring MVC里面有一个新注解,叫@RestController,大家不妨点进去看一下它的源码,会发现它其实就是@Controller和@ResponseBody这两个注解的合体,如下图所示。

在这里插入图片描述

所以,现在我们可以用@RestController注解来代替@Controller和@ResponseBody这两个注解了,如下所示。

package com.meimeixia.boot.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;

/**
 * @author liayun
 * @create 2021-04-19 4:24
 */
@RestController
public class HelloController {

    @RequestMapping("/hello")
    public String handle01() {
        return "Hello, Spring Boot 2!";
    }

}

测试

那我们怎么来运行我们写的这个Spring Boot应用呢?很简单,只需要来到我们的主程序类里面,运行main方法即可。要是搁以前的话,我们还得在IDEA里边整合Tomcat服务器,然后整一大堆,才能运行,而现在我们直接运行主程序类中的main方法就行了。这时,我们会看到IDEA控制台有内容输出,输出的是一些日志信息,如下图所示。

在这里插入图片描述

看到Tomcat started on port(s): 8080 ...这样的信息没?这是告诉我们Tomcat服务器已经在8080端口启动了,那不妨我们通过浏览器访问一下http://localhost:8080/hello该url,回车之后,你会发现服务器确实给我们响应了,如下图所示。

在这里插入图片描述
使用Spring Boot之后,是不是简化了我们的开发啊?现在基本上省略了很多我们以前的配置,包括连Tomcat服务器我们都不用安装了,直接运行主程序类中的main方法就行,而且我们现在也都测试成功了。当然了,Spring Boot更强大之处还在于能简化我们的配置,使用Spring Boot之后,只要写完主程序类,我们就可以直接编写咱们的业务了。

至此,咱们的第一个Spring Boot的Hello World入门程序就算是写好了,是不是很简单啊😘

简化配置

Spring Boot是怎么简化配置的呢?我们以前想要更改Tomcat服务器的端口号,还得打开Tomcat服务器配置文件来修改,而现在就不需要了。因为Spring Boot是一个来整合其他所有东西的总框架,所以Spring Boot为了简化我们的配置,会将未来我们所有的配置都抽取在一个配置文件里面,这个配置文件的固定名字就叫做application.properties。在该配置文件里面,我们什么都可以修改,包括可以修改Tomcat服务器的一些设置、Spring MVC的一些设置等等。

那不妨我们就在src > main > resources目录下新建application.properties这样一个配置文件,并在其里面更改Tomcat服务器启动的端口号为8888,如下图所示。

在这里插入图片描述

于是,我们再来启动一下我们这个Spring Boot应用,来看一下效果,如下图所示,从IDEA控制台输出的日志信息中可以看到,现在Tomcat服务器确实已经在8888端口启动了。

在这里插入图片描述

如果我们现在还是在浏览器中访问8080端口,那就有问题了,所以我们必须来访问8888端口,如下图所示。

在这里插入图片描述

从以上得知,Spring Boot给我们专门准备了一个统一的配置文件,所有的配置你都可以在这儿更改。如果我们不进行更改配置的话,其实Spring Boot也是有其默认的配置的。那么,我们到底能在咱们的Spring Boot应用中写上哪些配置呢?要想知道该问题的答案,我们就不得不参照Spring Boot的官方文档了。来到Spring Boot官方文档的索引页面,如下图所示。

在这里插入图片描述

在以上索引页面的底部,你会发现有Application Properties这样的一个章节,之前我也为大家介绍过。

在这里插入图片描述

在这一章节中,就指明了我们到底能在咱们的Spring Boot应用中写哪些配置,如下图所示。

在这里插入图片描述

可以看到,所有的配置列表全部在这都有展示,例如我们可以来搜一下上面写的server.port配置,发现该配置是位于11. Server Properties这一小节中,该小节罗列出来的都是有关服务器的配置。

在这里插入图片描述

如果你还想要配置与Spring MVC有关的一些东西,那么不妨看看9. Web Properties这一小节,该小节罗列出来的都是有关Web开发的配置。

在这里插入图片描述

所以,未来当你使用Spring Boot来开发应用的时候,配置不会写了,那就可以来参照Spring Boot官方文档中的Application Properties这一章节里面的内容了。在这一章节中,列举出了每一个配置项的名字叫什么,以及该配置的默认值是什么,包括该配置到底是用来干什么的,都说的很清楚了,在我们后续不断的深入学习中,我们是肯定会来配置application.properties这个配置文件的。

至此,你应该能得出这样一个结论了吧😊,就是Spring Boot给我们做了非常多的简化,只需要在配置文件这一处进行修改,就能修改我们整个应用的所有配置了。

简化部署

Spring Boot也能简化部署哟!如果要是搁以前的话,我们开发了一个应用,想要将其部署到目标服务器上,那么我们目标服务器是不是还得装Tomcat服务器等等一大堆啊,而且还得把咱们的应用打成war包,然后再把这个war包部署到Tomcat服务器上,你不觉得这样一套流程下来很麻烦吗?当然了,由于目前我们这个maven工程没有写打包方式,所以默认其打包方式就是jar了。

在这里插入图片描述

那有了Spring Boot之后,又该怎么做呢?我们不妨继续来参考一下Spring Boot官方文档中的Getting Started这一章节里面的内容,来到4.5. Creating an Executable Jar这一小节下,它说如果我们想要简化部署,那么我们得创建一个可执行的jar包。

在这里插入图片描述

也就是说,只要引入了Spring Boot给我们提供的如下这个插件,我们就可以把maven工程直接打成一个jar包了,这个jar包里面自带了我们整套的运行环境,而且该jar我们一般称为fat jar,意思是说它很胖,因为它里面什么东西都有。

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
</build>

正是由于打包成的jar包里面自带了我们整套的运行环境,所以我们就能直接运行了。不妨将以上插件复制到咱们maven工程的pom.xml文件里面,然后再来测试一下。

在这里插入图片描述

接下来,我们就要将咱们的maven工程打包成jar了,那怎么做到这一点呢?首先,打开Maven视图,并选中咱们的maven工程,然后展开其下面的Lifecycle目录,接着依次选中cleanpackage这两生命周期,紧接着点击以下红圈圈中的那个绿色小三角形。

在这里插入图片描述

当IDEA控制台打印出如下信息之后,就代表打包成功了。

在这里插入图片描述

而且,从IDEA控制台打印出的信息中,我们也可以知道打成的jar包到底是生成到了哪个位置,例如,笔者打成的jar包是生成在了C:\Users\{当前用户}\Desktop\boot-01-helloworld\target目录下,我们不妨进到该目录下,发现确实是生成了一个jar包,即boot-01-helloworld-1.0-SNAPSHOT.jar

在这里插入图片描述

其实,还有一种方式可以找到该jar包的位置,操作步骤如下图所示。

在这里插入图片描述

这时,会找到target目录所在的位置,如下图所示。

在这里插入图片描述

然后,进入target目录里面,你照样能看到生成的jar包。

而且,这个jar包我们可以直接来执行,下面我来给大家测试一下。首先,进入CMD命令行窗口中,并切换到C:\Users\{当前用户}\Desktop\boot-01-helloworld\target目录下,然后使用dir命令确认一下该目录下是否有生成的jar包,若确实有则使用java -jar xxx.jar命令直接运行该jar包,这时,你就会发现当前的Spring Boot应用正在启动,不一会儿,你就能看到当前的Spring Boot应用已经在8888端口启动起来了,如下图所示。

在这里插入图片描述

接着,我们再在浏览器中访问一下8888端口,你依旧能看到如下图所示的效果。

在这里插入图片描述

所以,你现在终于知道Spring Boot也能简化我们的部署了吧!可见,Spring Boot有多么的强大,从开发到配置,再到部署,都给我们做了简化。

如果你想在CMD命令行窗口以java -jar xxx.jar这样子的命令直接成功运行生成的jar包,那么你得注意如下几点。

注意点一

第一个注意点是大家一定要在IDEA中将当前的Spring Boot应用停掉。

注意点二

好多同学在CMD命令行窗口以java -jar xxx.jar命令直接运行生成的jar包时,发现Spring Boot应用老是起不起来,原因可能是因为你的CMD命令行窗口启用了快速编辑模式。不信的话,你就打开你的CMD命令行窗口的属性对话框看一下,极有可能你勾选了CMD命令行窗口的快速编辑模式,如下图所示。

在这里插入图片描述

如果你真的启用了快速编辑模式,当Spring Boot应用正在启动的时候,你的鼠标要是在CMD命令行窗口随便点一下,那么Spring Boot应用就会卡住不动了,这当然就起不起来了。所以,大家一定要取消掉CMD命令行窗口的快速编辑模式,这样,你的Spring Boot应用才能在CMD命令行窗口以控制台的方式正常启动。

注意点三

有可能很多同学第一次使用Spring Boot时,会遇到这样一个问题,由于要下载大量依赖嘛,有可能这些依赖还没有下载下来,所以启动主程序时老是报缺少哪些类这样的错误。想要解决该问题,第一你得把网络设置好,第二在Maven视图中选中你的maven工程,然后点一下那个刷新小图标,如下图所示,这样所有的依赖就会重新来进行下载了。

在这里插入图片描述

大家第一次来使用Spring Boot时,一定要耐心等待哟😀,因为第一次需要下载的jar包非常多。

以上就是我们的第一个Spring Boot的Hello World入门程序,大家是不是感觉到Spring Boot的强大了呢?而且最终Spring Boot也给我们打了一个jar包,上面说过,这个jar包里面所有的环境都有,我们不妨用压缩软件把它打开看一下,打开之后,你会看到有一个BOOT-INF目录,再打开BOOT-INF目录,会看到它里面还有一个lib目录,再打开lib目录,你会发现它里面有非常多的jar包,其中就有tomcat-embed-core-9.0.45.jar这样的一个jar包,如下图所示。

在这里插入图片描述

也就是说,Spring Boot帮我们打成的jar包里面已经自带了Tomcat服务器环境。当然了,lib目录下还有一些我们依赖的第三方jar包。

那我们自己写的程序是在哪呢?就在BOOT-INF\classes目录下,如下图所示,是不是还能看到我们自己写的配置文件啊?

在这里插入图片描述

这就是Spring Boot,从开发到配置,再到最终的部署、上线运维,都给我们带来了极大的方便。

相关推荐
©️2020 CSDN 皮肤主题: 猿与汪的秘密 设计师:白松林 返回首页