zoukankan      html  css  js  c++  java
  • 《SpringCloud 微服务实战 》 第2章:微服务构建:Spring Boot

    SprignBoot框架简介

       本节主要简单介绍一下SpringBoot:除了它是SpringCloud的基础之外,也由于自身的各项优点,如自动配置、快速开发、轻松部署等,非常适合作为微服务架构中各项具体服务的构建单元。

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

    快速入门

    我们通过Spring 官方的项目构建工具Spring Initializer生成一个SpringBoot基础项目,并实现网页输出一个HelloWorld的RESTful接口。

    配置文件:SpringBoot的默认配置文件位置为 src/main/resources/application.properties. 关于SpringBoot应用的配置文件内容 都可以几种在该文件中,根据我们引入的不同的Starter模块,可以在这里定义容器的端口号、数据库连接信息、日志级别等各种配置信息,比如,我们需要自定义WEB模块的服务端口号,可以在application.properties中添加server.port=8888 来制定服务的端口号为8888,也可以通过spring.application.name=hello类指定应用名(该名字在后续的SpringCloud中会被注册为服务名)。SpringBoot的配置文件可以只用传统的properties文件之外,还支持在被广泛推荐的YAML文件。

    YAML (英语发音为 /'jaemsl/,尾音类似 camel骆驼)是一个可读性高,用来 表达资料序列的格式。 YAML参考了其他多种语言,包括 C语言、Python、Perl, 并 从 XML、电子邮件的数据格式 ( RFC 2822)中获得灵感。 Clark Evans在 2001 年首次发表了这种语言, Ingy ddt Net与 
    Oren Ben-Kiki也是这种语言的共同设计 者。目前已经有数种编程语言或脚本语言支持(或者说解析)这种语言。YAML是YAML Ain’t a Markup Language ( YAML不是一种标记语言)的缩写。在开发这种语言时, YAML的意思其实是 : Yet Another Markup Language (仍是一种标记语
    言),但为了强调这种语言以数据作为中心,而不是以标记语言为重点,而用反向缩略语重新命名。 YAML的语法和其他高阶语言类似,并且可以简单地表达清单、散列表、标量等形态。它使用空白符号缩排和大量依赖外观的特色,特别适合用来表达或编辑数据结构、各种设定文档、文件大纲(例
    如,许多电子邮件标题格式和 YAML非常接近 ) 。 尽管它比较适合表达阶层式 ( hierarchical model)的数据结构,不过也有精致的语法可以表示关联性( relational model)的资料。由于 YAML使用空白符号和分行来分隔资料,使得它特别适合用 grep/Python/Perl /Ruby操作。其让人最容易上
    手的特色是巧妙避开各种封闭符号,如引号、各种括号等,这些符号在巢状结构时会变得复杂而难以辨认。
                                                                                    ----------维基百科

    YAML采用的配置格式不像properties的配置那样以单纯的简直对形式来表示,而是以类似大纲的缩进形式来表示,其结构更为清晰易读,同事配置内容的字符量也得到显著减少。除此之外,YAML还可以在一个单个的文件中通过spring.profiles属性来定义多个不同的环境配置。

    注意:YAML目前还有一些不足,他无法通过@propertySource注解来加载配置、但是,YAML降属性加载到内存中保存的时候是有序的,所以当配置文件中的信息需要具备顺序含义,YAML的配置方式比起properties配置文件更有优势。记住一个点,当application.properties和application.yml同时存在时,properties的优先级更高。

    自定义参数:应用中可以通过@Value注解来加载自定义参数 ${},${}同样可以在配置文件中进行参数的引用。

    使用随机数

    命令行参数:java -jar xxx.jar  --server.port = 9999  ,可以世界以命令行的方式来设置server.port属性,并将应用的端口设置为9999,在用命令行的方式启动Springboot应用是 ,连续的两个减号 --就是对application.properties中的属性进行复制的标识。

    多环境配置:我们在开发的时候,通常一套程序会被安装到几个不同的环境中,比如开发、测试、生产等,都需要不同的数据库地址、服务器端口,如果在未不同的环境打包都需要频繁修改配置文件的话,那必须是一个非常繁琐的事情。

    对于多环境的配置,SpringBoot只需要提供几个满足  application-{profile}.properties  的格式,其中{profile}对应环境标识,如下所示:

    application-dev.properties   :开发环境

    application-test.properties :测试环境

    application-prod.properties :生产环境

    以上三个配置文件,至于那个文件会被项目加载,需要早application.pro[perties 文件中通过spring.profiles.active属性来设置,其值对应配置文件名的 profile 值。如果spring.profiles.active = test ,那么就会加载application-test.properties配置文件的内容。

  • 相关阅读:
    RFC3489 STUN之客户端所处环境探测流程与部分属性含义说明
    视频直播中用户连麦技术模型与特点分析
    基于网络流量统计与反馈实现边缘机房间媒体流流量调度的一种思路
    基于Flash与window平台本地程序通信实现媒体流发布
    基于Flash ActionScript 实现RTMP发布与播放媒本流
    DirectShow音频采集声音不连续问题分析与解决办法经验总结
    一种高性能与高可用的流媒体系统之媒体流状态管理方法
    复用TCP连接提升流媒体服务器之间流量转发效率
    基于块流协议保证音频优先发送
    LibRTMP优化之调整输出块大小
  • 原文地址:https://www.cnblogs.com/dk1024/p/12990210.html
Copyright © 2011-2022 走看看