第三章 Spring Boot

第三章 Spring Boot

第三章 Spring Boot

Spring Boot 是一个全新的框架,起目的是用来简化Spring应用开发过程。本章使用Spring Boot重新开发第二章的实例。本章的主要内容如下:

  • Spring Boot概况
  • Spring Boot快速入门
  • Spring Boot安装配置
  • Spring Boot应用实战
  • Spring Boot运维支持

3.1 Spring Boot 概述

Spring Boot 是一个全新的框架,起目的是用来简化Spring应用开发过程。该框架使用了特定的方式进行配置。从而使开发人员不在需要重新定义一系列样板化的配置文件,从而专注于核心业务开发,项目涉及的一些基础设施由Spring Boot来解决。

3.1.1 发展背景

Spring Boot可以让开发人员不需要再编写复杂的xml配置文件,仅通过几行代码就能实现一个可以运行的web应用。Spring Boot使用Groovy来构建工程文件。

3.1.2 Spring Boot 特点


包含以下特性:

  • 为开发者提供Spring快速入门体验
  • 内嵌Tomcat 和 Jetty 容器,不需要部署war文件到web容器就可以独立运行应用
  • 提供许多机遇Maven的pom配置模板来简化工程配置
  • 提供实现自动化配置的基础设施
  • 提供可以直接在生产环境中使用的功能,如性能指标,应用信息和应用健康检查
  • 开箱即用,没有代码生成,也无须xml配置文件。

Spring 中管理对象的成为beans.通过一个控制反转容器,Spring为我们提供了一个聪明的管理Java对象依赖关系的方法,优雅之处在于,程序员无需了解Spring框架的存在,更无需要引入任何Spring类型。
使用Spring,程序几乎将所有的重要对象创建工作移交给Spring,并配置如何注入依赖。Spring支持xml或者注解两种配置方式。需要创建一个ApplicationContext对象,代表一个Spring控制反转容器。

3.1.3 Spring Boot启动器

Spring Boot是由一系列启动器组成的,这些启动器构成一个强大的,灵活的开发助手。开发人员根据项目需要,选择并组合相应的启动器,就可以快速搭建一个合适项目的基础运行框架。如下是一些有用的启动器。

3.2 快速入门

  • 使用Maven方式快速创建一个Spring web应用,首先需要在pom.xml文件中引入Spring Boot依赖。
<!--添加一个boot web启动器-->
<dependency>    <groupId>org.springframework.boot</groupId>    <artifactId>spring-boot-starter-web</artifactId></dependency>

spring-boot-starter-web内部封装了spring-web,spring-webmvc,jackson-databind.

  • 配置好之后,通过几行代码创建web应用

package com.smart.web;

import com.smart.domain.User;
import com.smart.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import java.util.Date;

@RestController
public class LoginController{
	private UserService userService;
    
	@RequestMapping(value = {"/","/index.html"})
	public ModelAndView loginPage(){
		return new ModelAndView("login");
	}
	
	@RequestMapping(value = "/loginCheck.html")
	public ModelAndView loginCheck(HttpServletRequest request,LoginCommand loginCommand){
		boolean isValidUser =  userService.hasMatchUser(loginCommand.getUserName(),
					                    loginCommand.getPassword());
		if (!isValidUser) {
			return new ModelAndView("login", "error", "用户名或密码错误。");
		} else {
			User user = userService.findUserByUserName(loginCommand
					.getUserName());
			user.setLastIp(request.getLocalAddr());
			user.setLastVisit(new Date());
			userService.loginSuccess(user);
			request.getSession().setAttribute("user", user);
			return new ModelAndView("main");
		}
	}

	@Autowired
	public void setUserService(UserService userService) {
		this.userService = userService;
	}
}

3.3 安装配置

3.3.1 基于Maven环境配置

Spring Boot依赖Maven 3.2+,如果基于Maven环境运行Spring Boot,则需要确保机器环境以及安装好了Maven。spring boot按照不同的功能进行模块划分。开发人员可以根据需要导入相关的模块。为了更容易地管理依赖版本和使用默认配置,Spring Boot提供了一个pom根配置。在项目工程中可以直接继承它。

<!--1 继承Boot的默认配置-->
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.3.3.RELEASE</version>
    </parent>
   <!--2 根据应用需要添加不同类型的启动器依赖-->
           <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jdbc</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
        <dependency>
  <!--3 配置运行插件->
        <plugin>
             <groupId>org.springframework.boot</groupId>
              <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>

添加插件之后,刷新IDEA开发工具,右侧能看到Spring Boot运行命令。

在默认情况下,Spring Boot对/static,/pubilc,/resources或者/META-INF/resources 目录下的静态文件提供支持,所有我们可以将应用中的静态文件(JS,CSS,Image)等放到这个目录中去。

3.4 运维支持

与开发和测试环境不同的是,当应用部署到生产环境时,需要各种运维相关的支持,如监控应用的各种性能指标,运行信息和应用状态。Spring Boot 对这些运维监控相关的类库进行了整合,形成了一个功能完备和可以定制的启动器,称为Actrator.


配置活Actuator相关的依赖以及服务健康检查属性配置,重新启动应用看,就可以在控制台上看到很多服务映射,如:‘’/health‘’,‘’/env‘’,”/info”等。

3.5 小结

对于使用SPring框架的开发人员来说,Spring Boot无疑是一个非常使用的工具。

FutureTech