这几天学习(上班摸鱼)的时候突然发现官网上SpringBoot 已经更新到了2.4.2的版本了。好吧,很久都没碰Spring家族的东西了,新入职的这家公司自己的技术栈严重的滞后,今天就抽空回忆一下SpringBoot的基本使用 。
首先按照惯例我们打开官网(spring.io)。我们发现截止到目前最新的稳定版是SpringBoot2.4.2。如下图所示:
我们可以发现 最新的GA版本就是2.4.2 ,所以我们今天使用的版本也是2.4.2。首先我们打开文档https://docs.spring.io/spring-boot/docs/current/reference/html/getting-started.html#getting-started,一步一步来学习。
我们一步一步来看,首先SpringBoot2.4.2要求我们的JDK环境必须是1.8以上,maven版本是3.3以上。 同时Servlet 容器的版本也做了说明。好吧 这里只是对环境的一些说明,我们可以直接看第四个小节:
检查环境的版本信息之后我们就可以继续往下看怎么创建一个简单的工程,根据文档描述,首先我们如果是使用maven来构建这个项目的话,需要创建一个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>
<groupId>com.example</groupId>
<artifactId>myproject</artifactId>
<version>0.0.1-SNAPSHOT</version>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.4.2</version>
</parent>
<description/>
<developers>
<developer/>
</developers>
<licenses>
<license/>
</licenses>
<scm>
<url/>
</scm>
<url/>
<!-- Additional lines to be added here... -->
</project>
好吧,我们在先创建一个文件夹,然后在该文件夹中创建这个pom.xml文件,如下所示:
编写完成之后我们在该文件的同级目录打开命令行,输入 mvn package 可以将该项目打包,大多数集成开发工具例如IDEA或者Eclipse 都有相关的maven插件 这里为了简单起见,官网上推荐我们继续使用文本编辑器。好吧 我们输入打包的命令后就会发现生成了一个target目录,该目录下有一个jar包,如下图所示
接着我们可以看看 这个文件的依赖,我们使用 mvn dependency:tree 命令来查看 :
我们发现什么也没有,这里就说明我们刚才加入的parent标签里面的内容并不会依赖具体的jar,官网上也说了,他只负责管理版本信息,后续我们引入依赖的时候就不需要加上version信息了。因此我们如果想要使用其他的功能 还要自己加入依赖。好吧 下面我们需要开发web应用程序,我们就需要引入spring-boot-starter-web 这个依赖 将下面的依赖信息加入到pom文件中的parent 标签下面即可
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
接着我们再次使用mvn dependency:tree 命令 以树形的结构查看依赖关系,如下所示:
我们可以发现 很多jar被依赖进来了,其中有我们熟悉的spring-web和spring-webmvc 同时 spring-core 、spring-beans、spring-aop以及spring-context和spring-expression 这几个springframework的基础核心包也在,好吧,这里我们就可以确定了 SpringBoot就是建立在springframework之上的一个全新的框架。这里相信大家已经注意到了,其中还有一个tomcat相关的jar包,为什么这里会出现tomcat的包呢 这个稍后会详细的给大家说明。下面我们就回到文档上 继续探索,我们将下面这段代码复制下来
import org.springframework.boot.*;
import org.springframework.boot.autoconfigure.*;
import org.springframework.web.bind.annotation.*;
@RestController
@EnableAutoConfiguration
public class Example {
@RequestMapping("/")
String home() {
return "Hello World!";
}
public static void main(String[] args) {
SpringApplication.run(Example.class, args);
}
}
由于我们使用的maven来构建项目,而maven 编译项目的时候默认会从src/main/java 目录下加载源码文件,因此我们在此之前还需要创建src/main/java 这个层级目录。如下图所示:
上述代码中类上@RestController和@RequestMapping这两个注解相信大家都是知道什么意思 这里就不再赘述,至于@EnableAutoConfiguration这个注解他的作用就是告诉SpringBoot根据加入的依赖 来做一些相应的配置,比如我们这里加入的是spring-boot-starter-web,这个注解就会告诉SpringBoot去做一些Web开发需要的一些配置。最后上述代码中还有一个main方法,main方法中主要是使用SpringBoot中的SpringApplication类的run方法来加载Spring容器,然后启动自动配置的tomcat服务器,需要注意的一点是我们需要将Example.class做为参数传递给run方法,告诉SpringApplication哪个是主组件,同样的args可以传递一些命令行参数。
好了,上面的代码现在是可以直接执行了,接下来我们使用maven来运行 ,我们在命令行输入 mvn spring-boot : run 命令 如下图所示:
当出现了以下内容的时候就说明我们的入门案例是可以正常的进行工作了,
接着我们在浏览器中访问localhost:8080 接口看到效果,这里我直接cmd命令行 访问 也可以看相同的效果。
好了,这就是文档上的第一个入门案例,是不是感觉SpringBoot很方便,至少我们不需要做一些SpringMVC中的一些繁琐的配置。好吧,那假如我们需要进行线上部署的话该怎么办呢,我们继续回到文档上,根据文档上的描述 ,我么需要在pom文件中新加入一个打包的插件,坐标如下 :
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
加入之后 我们使用 mvn package 命令 即可将我们的代码打包成一个可以执行的jar文件 ,该文件默认 在target目录下
好了,这个包 就是可以直接运行的,我们可以使用 jar tvf 命令来查看 这个jar包中的一些文件 如下所示:
最后 我们进入到target目录中 使用 java -jar 命令即可运行我们刚才打包的项目,效果如下图所示:
好了,到这里 我们的第一个入门案例已经撸完了,大家可能觉得用文本编辑器来编写很不方便 ,好吧,下面我们来使用大家比较喜欢用的IDEA来快速的创建一个入门的demo。
打开IDEA,新建项目 选择SpringInnitializr 然后点击next ,填写坐标信息 ,继续下一步,勾选自己需要的依赖 最后选择一个路径保存创建的项目即可,完整步骤如下图所示:
我们发现创建的项目结构 如下所示 :
其中src/main/java目录下存放的肯定是我们项目的源码,我们打开DemoApplication就会发现其中只有一个main方法,并没有业务代码,所以我们可以先来创建一个业务类 ,放在com.example.demo.controller 下。同样的返回一个字符串。
package com.example.demo.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class DemoConntroller {
@RequestMapping("/")
public String hello(){
return "hello boot ";
}
}
然后启动我们的DemoApplication即可运行项目 ,项目运行起来之后可以通过浏览器或者终端来查看效果:
好了,这就是本次我对官方文档上的入门案例的解读,大家有什么疑问欢迎在留言区讨论。