学一门技术我们大多都是以Hello Word
来开始的,当我们运行程序看到正常的输出Hello Word
会使自己无比的兴奋。接下来我们来介绍以不同的姿势创建Spring Boot
项目并编写Hello word
程序。
演示环境
- JDK 1.8
- Maven 3.5.4
- IntelliJ IDEA 2018.2.5 (Ultimate Edition)
- Spring Boot 2.1.1.RELEASE
创建Spring Boot
项目
1、使用Maven
创建项目
使用Maven
创建项目手动添加依赖的方式,是最直接最能理解Spring Boot
项目都需要哪些依赖和配置。这里需要使用到mvn archetype:generate
命令来创建一个Maven
工程的骨架。
mvn archetype:generate -DgroupId=xin.jerome.demo -DartifactId=demo-helloword -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
在命令行中执行该命令,生成项目骨架,并导入IDEA。
首先修改pom.xml
文件,引入Spring Boot
相关的依赖,添加spring-boot-starter-parent
依赖。这个依赖指定了Spring Boot
的版本,它会帮我们做版本仲裁,避免了因版本不同而引起的版本冲突的问题。
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.1.RELEASE</version>
</parent>
引入spring-boot-starter-web
依赖,这个依赖封装好了Spring Mvc
试我们方便的去使用,并且我们并不需要指定版本。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
引入spring-boot-starter-test
依赖,方便我们对我们的Spring Boot
项目进行测试相关的操作。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
</dependency>
引入spring-boot-maven-plugin
依赖,方便我们对我们的Spring Boot
项目进行打包。
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
到这儿我们就完成了我们的添加所有的基础依赖,会有如下结构:
<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/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>xin.jerome.demo</groupId>
<artifactId>demo-helloword</artifactId>
<packaging>jar</packaging>
<version>1.0-SNAPSHOT</version>
<name>demo-helloword</name>
<url>http://maven.apache.org</url>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.1.RELEASE</version>
</parent>
<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>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
接下来我们需要在包的根路径下编写HelloApplication
作为我们的项目的启动类。
package xin.jerome.demo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
/**
* Spring Boot项目的启动类
*
* @author Jerome Zhu
*/
@SpringBootApplication
public class HelloApplication {
public static void main(String[] args) {
SpringApplication.run(HelloApplication.class, args);
}
}
这里有两个需要注意的点,一是我们需要在我们的类上添加@SpringBootApplication
注解,二是我们需要调用SpringApplication
的静态run
方法,将我们主类和参数作为run
方法的参数。到这儿我们项目就创建完成了,我们就可以启动我们的Spring Boot
项目了,查看启动日志我们会发现启动在了Tomcat
的8080
端口。到这里其实我们与一个标准的Spring Boot
项目结构还需要一些其它目录,具体参照第二种方法创建的官方标准结构。
说明一下
Spring Boot
使用的是内嵌的Tomcat
容器。
2、使用start.spring.io
进行创建项目
Spring官方提供了Spring Initializr来让我们便利的创建Spring Boot
项目,操作步骤:
- 首先选择项目的构建工具,这里我们选择
Maven
。 - 选择编程语言,这里选
Java
。 - 选择
Spring Boot
的版本,我这里使用的是2.1.1.RELEASE
版本。 - 在左下方填写
Maven
的坐标。 - 在
Search for dependencies
中搜索web
来添加想要的依赖。 - 最后只需要点击
Generate Project
按钮来生成项目即可。
附一张点击Generate Project
按钮的之前的图片。
创建完项目之后,使用IDEA
导入项目即可。
3、使用IntelliJ IDEA创建项目
这个需要说明一下,这个功能只有旗舰版有,社区版是没有这个功能的。网上破解的方法有很多,大家自行解决吧,当然有实力的自行付费也是可以的。创建的步骤:
- 打开工具,点击
New Project
,选择Spring Initializr
,选择项目的JDK
,然后点击Next
。 - 填写
Maven
的坐标信息,项目相关的描叙信息、版本等等,然后点击Next
。 - 接下来就是选择
Spring Boot
的版本(在右上方)和项目相关依赖,之后一路Next
就行。
附一张第三步的图片。
其实IDEA
创建项目和Spring Initializr
创建是一样的,只不过使用工具相对比较方便。
编写HelloWord
程序
1、编写Controller
通过上面的三种方法创建好的Spring Boot
项目,离我们的HelloWord
也就差一步。接下来我们就新建一个包controller
并且在包下创建HelloController
类。
package xin.jerome.demo.controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* Hello{@link RestController}
*
* @author Jerome Zhu
*/
@RestController
public class HelloController {
@GetMapping("")
public String sayHello() {
return "Hello Jerome !";
}
}
在这个HelloController
类中我们使用到了两个注解@RestController
和@GetMapping
。其中@RestController
其实是@Controller
和@ReponseBody
的组合注解,标明了我们这个类会作为一个Spring
应用的组件,在应用启动进行包扫描的时候会被加载到Spring
的容器中。另外@GetMapping
其实就是@RequestMapping(method = RequestMethod.GET)
的简化版。
2、测试Controller
项目中我们写完一个方法后,对代码的测试也是必不可少的。这里我们就那使用Maven
创建的项目来演示,我们首先编写测试的主文件。
package xin.jerome.demo;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
/**
* Spring Boot 项目测试主文件
*
* @author Jerome Zhu
*/
@RunWith(SpringRunner.class)
@SpringBootTest
public class HelloApplicationTests {
}
接下来编写Controller
的测试文件:
package xin.jerome.demo.controller;
import org.junit.Test;
import xin.jerome.demo.HelloApplicationTests;
import static org.junit.Assert.*;
/**
* {@link HelloController} 测试
*
* @author Jerome Zhu
*/
public class HelloControllerTests extends HelloApplicationTests {
@Test
public void sayHello() {
assertEquals("Hello Jerome !",new HelloController().sayHello());
}
}
这里我们继承了HelloApplicationTests
的主测试文件,这样我们就不用在每个类中配置应用测试相关的环境,只需要在主类中配置好就行。
运行Spring Boot
项目
1、使用IDEA
运行项目
我们可以在项目的主类HelloApplication
运行我们的main
方法就行了,当看到Tomcat started on port(s): 8080
这句话的时候 ,说明我们的应用就已经运行成功了。
2、使用Jar
的方式运行项目
不知大家是否还记得我们在使用Maven
创建项目的时候,引入了一个spring-boot-maven-plugin
的依赖,这个依赖就是为了帮助我们对项目进行打包的。
使用Maven
命令对项目进行打包:
mvn clean package -Dmaven.test.skip=true
执行完该命令后,在项目根目录下的target
目录下回生成一个xxx.jar
,这里我生成的是demo-helloword-1.0-SNAPSHOT.jar
。
在命令行中,切换到target
目录下使用java -jar
的命令运行项目:
java -jar demo-helloword-1.0-SNAPSHOT.jar
我们同样能看到启动日志Tomcat started on port(s): 8080
的输出,代表我们的应用启动成功了。
访问项目
我们通过两种方式运行了我们的应用,接下来我们通过浏览器访问http://localhost:8080/
在浏览器中会有如下图的结果:
总结
通过我们上面的一顿操作,我们学会了三种创建Spring Boot
项目的姿势和两种运行Spring Boot
项目的方法。其中使用Maven
创建项目和使用Jar
的方式运行项目是动手操作能力相对比较强的,会让我们对Spring Boot
项目印象更加深刻。当然创建方式和运行方式不止我介绍的这几种,上面的已经满足了我们日常的需求。
具体代码请参考GitHub:spring-boot-demo-helloword小节。