此处介绍Spring Boot的目的除了它是Spring Cloud的基础外,也由于其自身的各项优点,如自动化配置、快速开发、轻松部署等,非常适合用作微服务架构中各项具体微服务的开发框架。
本章内容:
  • 如何构建Spring Boot项目
  • 如何实现RESTful API接口
  • 如何实现多环境的Spring Boot应用配置
  • 深入理解Spring Boot配置的启动机制
  • Spring Boot应用的监控与管理

框架简介

  Spring Boot通过大量的自动化配置等方式简化了Spring原有样板化的配置,使开发者可以快速构建应用。除此之外,Spring Boot还通过一系列Starter POMs的定义,让我们整合各项功能的时候,不需要再Maven的pom.xml中维护那些复杂的依赖关系,而是通过类似模块化的starter模块定义来引用,使得依赖管理工作变得更为简单。
  在如今容器化大行其道的时代,Spring Boot除了可以很好融入Docker之外,其自身就支持嵌入式的Tomcat、Jetty等容器。所以,通过Spring Boot构建的应用可以不再安装Tomcat,将应用打成war,再部署到Tomcat这样复杂的构建与部署动作,只需将Spring boot应用打成jar包,并通过java -jar命令直接运行就能启动一个标准化的web应用,这使得Spring boot应用十分轻便。
 

快速入门

项目构建与解析

1 系统及工具版本要求
  • java 7 及以上版本
  • Spring framework 4.2.7及以上版本
  • Maven 3.2 及以上版本 / Gradle 1.12 及以上版本
2 构建Maven项目

  

  • 选择构建工具 Maven Project、Spring boot版本选择1.3.7以上,填写Group和Artifact信息,在Search for dependencies 中搜索需要的其他依赖包,因为要实现RESTful API,所以可以添加Web依赖。
  • 单击Generate Project按钮下载项目压缩包
  • 解压项目包,并用IDE以Maven项目导入。

工程结构解析

  • src/main/java: 主程序入口HelloApplication,可通过该类直接启动Spring Boot项目
  • src/main/resources:配置目录,引入配置信息。由于引入了Web模块,因此产生了static目录和templates目录,前者存放静态资源,如图片、CSS、javascript等;后者用于存放Web页面的模板文件
  • src/test:单元测试目录,生成的HelloApplicationTests通过JUnit4实现,可以直接用运行Spring Boot应用的测试。

Maven配置分析

<?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>hello</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging> <name>hello</name>
<description>Demo project for Spring Boot</description> <parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.6.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent> <properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties> <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>
<scope>test</scope>
</dependency>
</dependencies> <build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
  可以看到,groupId和artifactId对应生成项目时页面上输入的内容。另外,默认的打包形式为jar,因为默认的web模块依赖会包含嵌入式的Tomcat,使应用的jar自身就具备了提供web服务的能力
  父项目parent配置中定义了Spring Boot版本的基础依赖以及一些默认配置内容,比如,配置文件application.properties的位置等。
  在项目依赖dependencies配置中,包含了下面两项:
    spring-boot-starter-web:全栈Web开发模块,包含嵌入式Tomcat、Spring MVC。
    spring-boot-starter-test:通过测试模块,包含JUnit、Hamcrest、Mockito。
  这里所引用的web和test模块,在Spring Boot生态中被称为Starter POMs。Starter POMs是一系列轻便的依赖包,是一套一站式的Spring相关技术的解决方案。开发者在使用和整合模块时,不必再去搜寻样例式的依赖配置来复制使用,只需引入对应的模块包即可。比如,开发web应用的时候,就引入spring-boot-starter-web,希望应用具备访问数据库能力的时候,那就再引入spring-boot-starter-jdbc或是更好用的spring-boot-starter-data-jpa。
  Spring boot的Starter POMs采用spring-boot-starter-*的命名方式,*代表一个特别的应用功能模块。
  在最后项目构建的build部分,引入Spring boot的Maven插件,帮助方便的启停应用,这样在开发时就不用每次去找主类或是打包成jar来运行微服务,只需要通过 mvn spring-boot:run 命令就可以快速启动spring boot应用。
 

实现RESTful API 

  在Spring boot中创建RESTful API的实现代码和Spring MVC应用一样,只是减少了一些配置文件,可以直接开始编写Controller内容。
  

@RestController
public class HelloController { @RequestMapping(value = "index")
public String index(){
return "hello";
}
}
  启动该应用,通过浏览器访问http://localhost:8080/index,返回预期效果:hello。
 

启动Spring Boot应用

  1、作为Java应用程序,可以直接通过运行拥有main函数的类来启动
  2、在Maven配置中,之前提到了spring-boot插件,可以使用它来启动,比如执行:mvn spring-boot:run命令,或是直接单击IDE中对maven插件的工具
  3、在服务器上部署运行时,通常先使用 mvn install 将应用打包成jar包,再通过 java -jar xxx.jar 来启动应用。
 

配置详解

配置文件

  在上述示例中提到过src/main.resources目录是Spring Boot的配置目录,所以当要为应用创建个性化配置时,应在该目录下进行。
  Spring Boot的默认配置文件位置为src/mian/resources/application.properties。关于Spring boot应用的配置内容都可以几种在该文件中,根据我们引入的不同starter模块,可以在这里定义容器端口号、数据库连接信息、日志级别等各种配置信息。比如要修改web模块的服务端口号,可以在application.properties文件中添加 server.port=8888 来指定服务端口为8888(默认端口为8080)。
  Spring boot的配置文件除了可以使用传统的properties文件之外,还支持YAML文件。
  YAML采用的配置格式不像properties的配置那样以单纯的键值对形式来表示,而是以类似大纲的缩进形式来表示。比如
  

server:
port: 9996
contextPath: /webux
tomcat:
uri-encoding: utf-8
spring:
application:
name: emer-business-webux
thymeleaf:
cache: false
suffix: .html
content-type: text/html; charset=utf-8
enabled: true
encoding: utf-8

  通过YAML的配置方式可以减少配置内容的字符量,其结构也更为清晰易读。

自定义参数

  可以在配置文件中定义一些我们需要的自定义属性,然后在应用中通过@Value注解来加载这些自定义参数。(方式很多种)

第二章 微服务构建:Spring Boot的更多相关文章

  1. 构建微服务:Spring boot

    构建微服务:Spring boot 在上篇文章构建微服务:Spring boot 提高篇中简单介绍了一下spring data jpa的基础性使用,这篇文章将更加全面的介绍spring data jp ...

  2. Spring boot学习1 构建微服务:Spring boot 入门篇

    Spring boot学习1 构建微服务:Spring boot 入门篇 Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程.该框 ...

  3. 微服务下 Spring Boot Maven 工程依赖关系管理

    单体 Spring Boot Maven 工程 最基本的 pom.xml 包含工程信息.Spring Boot 父工程.属性配置.依赖包.构建插件 <?xml version="1.0 ...

  4. SpringCloud(8)微服务监控Spring Boot Admin

    1.简介 Spring Boot Admin 是一个管理和监控Spring Boot 应用程序的开源软件.Spring Boot Admin 分为 Server 端和 Client 端,Spring ...

  5. 构建微服务:Spring boot 入门篇

    什么是Spring Boot Spring Boot 是由 Pivotal 团队提供的全新框架,其设计目的是用来简化新 Spring 应用的初始搭建以及开发过程.该框架使用了特定的方式来进行配置,从而 ...

  6. Java微服务之Spring Boot on Docker

    本文学习前提:Java, Spring Boot, Docker, Spring Cloud 一.准备工作 1.1 安装Docker环境 这一部分请参考我的另一篇文章<ASP.NET Core ...

  7. spring boot 2.0.3+spring cloud (Finchley)8、微服务监控Spring Boot Admin

    参考:Spring Boot Admin 2.0 上手 Spring Boot Admin 用于管理和监控一个或多个Spring Boot程序,在 Spring Boot Actuator 的基础上提 ...

  8. 小马哥-Java 微服务实践 - Spring Boot 系列-01Java 微服务实践 - Spring Boot 系列(一)初体验

    课程github地址 https://github.com/mercyblitz/segmentfault-lessons 传统的web应用架构.微服务是一种架构.不限定什么语言 单体应用和微服务的对 ...

  9. 第二章 微服务网关基础组件 - zuul入门

    一.zuul简介 1.作用 zuul使用一系列的filter实现以下功能 认证和安全 - 对每一个resource进行身份认证 追踪和监控 - 实时观察后端微服务的TPS.响应时间,失败数量等准确的信 ...

随机推荐

  1. C++成员函数在内存中的存储方式

    用类去定义对象时,系统会为每一个对象分配存储空间.如果一个类包括了数据和函数,要分别为数据和函数的代码分配存储空间.按理说,如果用同一个类定义了10个对象,那么就需要分别为10个对象的数据和函数代码分 ...

  2. [leetcode]90. Subsets II数组子集(有重)

    Given a collection of integers that might contain duplicates, nums, return all possible subsets (the ...

  3. 49-2015年第6届蓝桥杯Java B组

    1.三角形面积 如图1所示.图中的所有小方格面积都是1. 那么,图中的三角形面积应该是多少呢? 请填写三角形的面积.不要填写任何多余内容或说明性文字.   image.png   计算方法: 8 * ...

  4. python积累二:中文乱码解决方法

    根据网上提供的解决方法:添加#coding=utf-8或# -*- coding: utf-8 -*- #coding=utf-8 print "还不行?" 执行结果:还是乱码!: ...

  5. Linq的执行效率及优化

    描述:项目中使用了linq,发现写的顺序不一样最后的结果也不一样,效率也不一样. Linq的执行效率对比 List<int> source = new List<int>(); ...

  6. Android工具

    2018-09-27 安卓签名工具 AndroidKiller 比如包打好了,想替换一个图片,就用zip打开,替换图片,重新签名.

  7. 第一个VS2015 Xaramin Android项目

    20170323新增:VS环境配置 打开VS,菜单栏选工具(Tools) 选项\ 一般有2个地方需要修改 1 2 新建第一个项目,什么都没有修改的情况下(已经配置好环境变量)直接运行,会发现如下错误: ...

  8. 谷歌发布了 T2T(Tensor2Tensor)深度学习开源系统

    谷歌开源T2T模型库,深度学习系统进入模块化时代! 谷歌大脑颠覆深度学习混乱现状,要用单一模型学会多项任务 https://github.com/tensorflow/models https://g ...

  9. ABP框架系列之十四:(Background-Jobs-And-Workers-背景工作和工人)

    Introduction ASP.NET Boilerplate provides background jobs and workers those are used to execute some ...

  10. visual studio 2013怎样快速查看代码函数关系--代码图

    可以发现没有调试运行代码时是无法查看代码图的,可以在某行加一个断点,如下图,并开始debug调试: 这时,就会在代码调试工具栏看到代码图按钮,点击它: 右边就会出现代码图了: 这下就方便多了. 不仅适 ...