Spring Boot 简化了基于 Spring 的应用开发。它为 Spring 和常用第三方库提供了默认配置,还可以直接使用内嵌服务器,通过 java -jar 启动一个 Web 应用。

先做一个最简单的 Hello World,熟悉一下项目结构和启动方式。本文使用 JDK 8、Maven 3.3.9、Spring Boot 1.5.4.RELEASE 和 IntelliJ IDEA。

可以先检查 Java 和 Maven 环境:

java -version
mvn -version

创建 Maven 项目

创建一个普通 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
                             http://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>1.5.4.RELEASE</version>
    </parent>

    <groupId>com.example</groupId>
    <artifactId>spring-boot-hello</artifactId>
    <version>1.0-SNAPSHOT</version>

    <properties>
        <java.version>1.8</java.version>
    </properties>

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

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

spring-boot-starter-parent 提供了依赖和插件的默认管理,spring-boot-starter-web 则引入 Spring MVC、内嵌 Tomcat 等 Web 开发需要的依赖。执行下面的命令,可以查看最终引入了哪些依赖:

mvn dependency:tree

Starter 的具体作用后面单独再说,这里先把项目跑起来。

编写启动类

创建 src/main/java/com/example/demo/Application.java:

package com.example.demo;

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

@SpringBootApplication
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}

@SpringBootApplication 包含了 @Configuration、@EnableAutoConfiguration 和 @ComponentScan 的常用配置。启动类放在根包,下面的 web、service 等子包就会被自动扫描。

SpringApplication.run() 会创建 Spring 容器,并启动自动配置好的内嵌 Tomcat。

编写 Controller

在 com.example.demo.web 包下创建 HelloController:

package com.example.demo.web;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class HelloController {
    @RequestMapping("/hello")
    public String hello() {
        return "Hello World!";
    }
}

@RestController 表示方法返回值直接写入响应。这里访问 /hello 时,会返回一段简单文本。

运行项目

在项目目录执行:

mvn spring-boot:run

启动日志中可以看到 Spring Boot 1.5.4.RELEASE 和内嵌 Tomcat。浏览器打开:

http://localhost:8080/hello

页面输出:

Hello World!

最后把项目打成可执行 Jar:

mvn package
java -jar target/spring-boot-hello-1.0-SNAPSHOT.jar

再次访问 /hello,结果和使用 Maven 启动时一样。这个最小项目里没有写 Tomcat 配置,也没有单独声明 Spring MVC 的各项依赖,这正是 Spring Boot 自动配置和 Starter 带来的方便。

版本相关配置可以对照 Spring Boot 1.5.4 参考文档。

最后修改:2017 年 07 月 20 日
如果觉得我的文章对你有用,请随意赞赏