使用Spring Boot开发 “Hello World” Web应用

时间:2024-01-16 20:03:32

环境准备

由于现在很多IDE都支持Maven, 所以我们将使用Maven构建该工程;

开始之前,需要先安装Java和Maven:

本工程将基于Spring Boot 1.4.3.RELEASE开发,推荐的Java版本是Java 7+,maven版本是3.2+,可使用如下命令检查是否符合要求:

使用Spring Boot开发 “Hello World” Web应用

创建POM

由于使用Maven构建,所以我们首先需要创建一个pom.xml文件,用于构建本工程,打开你最喜欢的编辑器(如Notepad++),添加如下内容:

<?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> <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>1.4.3.RELEASE</version>
</parent> <!-- Additional lines to be added here... --> </project>

添加依赖

Spring Boot提供了一系列的“启动器”,使得添加依赖变得非常简单;

由于本工程是一个Web工程,所以我们选择添加spring-boot-starter-web“启动器”依赖;

添加spring-boot-starter-web依赖

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

为了更加直观的看到spring-boot-starter-web引入的依赖,我们可以使用mvn dependency:tree命令查看工程的依赖树,如下是添加前后的区别:

前(注意观察,虽然继承了spring-boot-starter-parent,但是并没有引入任何依赖):

使用Spring Boot开发 “Hello World” Web应用

后:

使用Spring Boot开发 “Hello World” Web应用

可以发现,在添加前,项目没有任何依赖,添加完spring-boot-starter-web依赖后,Tomcat、Jackson、Spring Boot等依赖也都自动添加了进来。

最后,有一点值得注意的是,为了简便,我们这个工程是继承spring-boot-starter-parent工程,spring-boot-starter-parent帮我们预先定义了很多插件管理配置、编译级别(Java 6)、编码(utf-8)等,不过并没有添加任何依赖,有兴趣的可以查看spring-boot-starter-parent工程的pom.xml文件,链接如下:

https://github.com/spring-projects/spring-boot/blob/master/spring-boot-starters/spring-boot-starter-parent/pom.xml

编写代码

为了完成这个应用,我们需要创建一个简单的Java文件,如下,Maven默认情况下会去src/main/java目录编译java文件,所以我们要先创建这个目录结构,然后添加src/main/java/Example.java文件:

import org.springframework.boot.*;
import org.springframework.boot.autoconfigure.*;
import org.springframework.stereotype.*;
import org.springframework.web.bind.annotation.*; @RestController
@EnableAutoConfiguration
public class Example { @RequestMapping("/")
String home() {
return "Hello World!";
} public static void main(String[] args) throws Exception {
SpringApplication.run(Example.class, args);
} }

注意观察以上代码,我们使用了@RestController和@RequestMapping两个Spring MVC的注解,

@RestController用于表明该类是一个Controller,且返回的内容直接写入到响应body里;

@RequestMapping用于url路由映射,在这里表面路径为“/”的Http请求将会映射到home()这个方法来处理;

另外,还使用了@EnableAutoConfiguration注解,添加这个注解后,Spring Boot会基于你添加的依赖去自动配置Spring,由于spring-boot-starter-web添加了Tomcat和Spring MVC,所以,Spring Boot自动配置会假定你正在开发一个web应用程序,并依此自动添加相关Spring配置。

最后,要关注的是main方法,跟普通的main方法没什么区别,只有一句话,调用SpringApplication的run方法启动应用。

使用maven命令运行应用

由于继承了spring-boot-starter-parent工程,所以我们可以直接使用mvn spring-boot:run命令来运行程序,如下所示:

$ mvn spring-boot:run

  .   ____          _            __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v1.4.3.RELEASE)
....... . . .
....... . . . (log output here)
....... . . .
........ Started Example in 2.222 seconds (JVM running for 6.514)

启动后,在浏览器输入http://localhost:8080/ 即可以看到Controller中home方法返回的结果:

使用Spring Boot开发 “Hello World” Web应用

另外使用ctrl-c,可以关闭应用。

创建一个可执行的jar包

很简单,添加一个maven插件,如下代码;

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

然后运行mvn package命令即可(注意,spring-boot-starter-parent的POM已经帮我们做了配置,绑定了repackage goal, 如果没使用继承parent POM,我们需要做更多配置,详情参考plugin documentation):

打完包后,我们可以在target目录下找到helloworld-0.0.1-SNAPSHOT.jar包。

如果要运行程序的话,也很简便,输入 java -jar target/helloworld-0.0.1-SNAPSHOT.jar 命令即可启动应用,如下所示:

$ java -jar target/helloworld-0.0.1-SNAPSHOT.jar

  .   ____          _            __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v1.4.3.RELEASE)
....... . . .
....... . . . (log output here)
....... . . .
........ Started Example in 2.536 seconds (JVM running for 2.864)
使用Spring Boot开发 “Hello World” Web应用

同样,启动后,在浏览器输入http://localhost:8080/ 即可以看到Controller中home方法返回的结果。

IDE推荐

最后,虽然本例子未使用任何IDE,主要是因为比较简单;如果开发复杂的应用,还是强烈推荐使用IDE,如Spring Tool Suite,我使用的是sts-3.8.3.RELEASE版本。

参考资料

http://docs.spring.io/spring-boot/docs/1.4.3.RELEASE/reference/htmlsingle/