(一)开始第一个Spring Boot应用程序

©此文章为作者原创。未经允许,不得用于任何商业用途,转载请注明出处。

概述

Spring Boot可以轻松创建独立的生产级的基于Spring的应用程序。它遵循“约定大于配置”的原则,使用最少的配置,一切都尽可能地自动化,让快速应用程序开发(Rapid Application Development)变得如此的简单与优雅。

版本约定

Spring Boot的更新迭代速度非常的快,已经发展到2.X系列,目前官网的最新版本是2.1.3.RELEASE。为了能够让读者了解到Spring Boot的新特性与新用法,我尽可能地使用最新的Spring Boot版本来演示。Spring Boot2.X需要jdk 1.8+、apache maven 3.3+环境,开发工具可以选择开源的eclipse或商业的intelliJ idea(需要提到的是JetBrains官方推出了学生免费授权计划,如果你是学生,只要提供校园邮箱,国际学生证(ISIC)或是有效的证明文件来验证学生身份即可免费使用全系列产品)。

创建第一个Spring Boot应用

新建一个maven项目,编辑pom.xml工程文件引入Spring Boot相关依赖

<?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.tutorial</groupId>
  <artifactId>study</artifactId>
  <version>1.0-SNAPSHOT</version>
  <packaging>war</packaging>

  <name>study Maven Webapp</name>
  <!-- FIXME change it to the project's website -->
  <url>http://www.example.com</url>

  <!-- Inherit defaults from Spring Boot -->
  <parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.1.3.RELEASE</version>
  </parent>

  <dependencies>
    <!-- Add typical dependencies for a web application -->
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
  </dependencies>

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

项目的目录结构 ../../../images/post/springboot/ch01/01.png

接下来配置一个启动类,一般命名为*Application,它是整个Spring Boot应用程序的入口

package com.tutorial.study;

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

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

可以看到使用了@SpringBootApplication注解,标明这是一个启动类。@SpringBootApplication是一个组合注解,作用相当于@Configuration, @EnableAutoConfiguration和@ComponentScan三个注解的结合。

为了能够将Spring Boot应用程序以war方式打包部署在tomcat运行,还需要写一个扩展类继承org.springframework.boot.web.servlet.support.SpringBootServletInitializer类,覆盖其configure(SpringApplicationBuilder)方法

package com.tutorial.study;

import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;

public class ServletInitializer extends SpringBootServletInitializer {
    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application){
        return application.sources(StudyApplication.class);
    }
}

创建一个控制器

package com.tutorial.study.controllers;

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

@RestController
public class IndexController {
    @RequestMapping(value = "/", method = RequestMethod.GET)
    public String index() {
        return "Hello, world!";
    }
}

到这里我们的第一个Spring Boot应用就完成了。在开发工具中选择你的tomcat服务器,运行该应用程序。应用程序启动后使用浏览器访问localhost:8080/应用程序名称会得到Hello, world! ../../../images/post/springboot/ch01/02.png

这一节的代码可在https://github.com/HuasLeung/spring-boot-tutorial 下载。