美文网首页
Chapter two《SpringCloud微服务实战》

Chapter two《SpringCloud微服务实战》

作者: LUOERD | 来源:发表于2018-12-13 17:59 被阅读0次

构建微服务的基础框架:Spring Boot

1.Spring Boot除了它是Spring Cloud的基础之外,优点还有:自动化配置快速开发轻松部署等。墙裂推荐使用Spring Boot来构建微服务,还可以轻松简单整合Spring Cloud实现系统服务化。避免传统Spring构建方式带来的依赖管理。 image.png

  • Spring Boot的宗旨并非要重写Spring或者替代Spring,而是设计大量的自动化配置等方式来 简化 Spring原有样板化的配置。遵循“习惯优于配置”的理念(项目中存在大量的配置,此外还内置一个习惯性的配置,让你无须手动进行配置。)

  • Spring Boot还通过一系列的 Starter POMs 的定义,让我们整合各项功能的时候,不需要在 Maven的 pom.xml 中维护那些错综复杂的依赖关系,而是通过类似模块化的 Starter 模块定义来 引用,使得依赖管理工作变得easy.

  • 解释:REST -- REpresentational State Transfer,英语的直译就是“表现层状态转移”。说人话:RESTful:URL定位资源,用HTTP动词(GET,POST,PUT,DELETE)描述操作。RESTful API就是一套协议来规范多种形式的前端和同一个后台的交互方式。

    • Resource:资源,即数据。
    • Representational:某种表现形式,比如用JSON,XML,JPEG等;
    • State Transfer:状态变化。通过HTTP动词实现。
  • Spring Boot 核心功能##

    • Spring Boot可以以 jar包的形式独立运行。运行一个Spring Boot项目只需要通过 java -jar XXX.jar 来运行。
    • 内嵌Servlet容器。 Spring Boot可选择内嵌Tomcat、Jetty和Udertow,无须再以war包部署项目。
    • 提供Starter简化 Maven 配置。 Spring提供了一系列的 starter pom 来简化Maven的依赖加载。
    • 自动配置Spring。Spring Boot会根据在类路径中的jar包、类,为 jar包里的类自动配置Bean(只考虑了大部分开发场景,有的需要手动配。)
    • 准生产的应用监控。Spring Boot提供基于http、ssh、telnet 对运行时的项目进行监控。
    • 无代码生产和 xml 配置。

2.快速搭建

  • 构建maven项目:
    访问:http://start.spring.io 下图以maven构建Spring Boot项目,注意红色标记。

    image.png
  • 导入解压后的项目包并导入,如下图: image.png

    ps: Spring Boot基础结构有三大块:

    • src/main/java:主程序入口:DemoApplication,可以通过直接运行此类来启动SpringBoot应用。
    • src/main/resources:配置目录。
    • src/test:单元测试目录。
  • maven 配置简单分析:

    • 打开pom.xml 文件,如下图示: image.png image.png

PS: Spring Boot 的Starter POMs 采用 spring-boot-starter-* 的命名方式,* 代表一个特别的应用功能模块,比如web、test。

  • 实现RESTful API
    image.png image.png
    • 启动Spring Boot应用方式有多种:1.作为 Java 程序,找main函数;2.在maven 中,通过spring-boot插件,可以使用它来启动,比如:mvn spring-boot:run命令;3.在服务器上部署运行时,首先 mvn install 将应用打包成 jar 包,再通过 java -jar XXX.jar来启动应用。
  • 编写单元测试
    • 手写配套的单元测试的习惯,在微服务架构中非常重要。尤其是这些单元测试可以支持我们未来可能会进行的重构。在 src/test 下的测试入口类:DemoApplicationTests 模拟HTTP请求,测试 /hello 接口。
  • 配置详解
    • 配置文件。Spring Boot的默认配置文件位置为:src/main/java/resources/application.properties,引入不同的 starter 模块。除了支持传统的 properties文件之外,还支持现在被广泛推荐的 YAML 文件。 image.png 有YAML 的配置方式可以看到,配置信息简单、易懂,此外,YAML 还可以在一个单一的文件中通过使用spring profiles属性来定义多个不同的环境配置,eg:在指定为测试 test 环境时,server.port将使用8882;而在生产 prod 环境,server.port=8883;如果没有指定环境,默认使用8881端口。 image.png image.png
  • 自定义参数。除了设置各个Starter 模块中的预定义的配置属性,也可以在application.properties 中添加我们需要的自定义属性。eg: image.png 然后,可以通过 @Value 注解来加载我们定义的参数。 image.png PS:注意点: image.png
  • 参数应用 在application.properties 中的各个参数之间可以直接通过使用 PlaceHolder的方式来应用,像下面设置: image.png
  • 使用随机数。eg.秘钥、服务端口等,需要被加载的时候,不是一个固定的值,这时可以考虑 ${random} 配置来生产随机的int、long或String等,达到在配置中随机生成属性,而不是在代码中实现逻辑。常见配置方式如下: image.png
  • 命令行参数。eg: java -jar XXX.jar --server.port=8888命令 等价于在 application.properties中添加属性 server.port=8888。
    通过命令行来修改属性值是Spring Boot非常重要的一个特性。通过此特性,理论上已经使得应用的属性在启动前是可变的,所以,其中的端口号、数据库连接等,都是可以在应用启动时发生改变的。PS:如果每个参数都要通过命令行来指定,这显然不是一个好方案,所以看下面:如何在SpringBoot中实现 多环境的配置
  • 多环境配置。多环境配置的文件名需要满足格式:application-{profile}.properties,其中,{profile}对应你的环境标识,如下:
    • application-dev.properties:开发环境
    • application-test.properties:测试环境
    • application-prod.properties:生产环境
      至于哪个配置文件会被加载,需要在 application.properties文件中通过spring.profiles.active 属性来设置,其值对应文件中的{profile}值。eg:spring.profiles.active=test 就会加载 application-test.properties 配置文件内容。
  • 加载顺序
    image.png image.png
  • 监控与管理。Starter POMs 中有一个特殊的依赖模块:spring-boot-starter-actuator。引入该模块将自动为Spring Boot构建的应用提供一系列的 用于监控的端点
    • 初识 actuator。 在 pom.xml 的dependency节点中新增:spring-boot-starter-actuator 的依赖即可。如图: image.png
    • 原生端点。根据端点的作用可以将原生端点分为三类:
      • 应用配置类。/autoconfig:positiveMatches和negativeMatches、/beans、/configprops、/env、/mappings、/info。
      • 度量指标类。/metrics、/health、/dump、/trace、/
      • 操作控制类。在原生端点中,只提供了一个用来关闭应用 的端点:/shutdown。可以用如下配置开启它:endpoints.shutdown.enabled=true

谢谢你,读到这里。。。
Less is more.

相关文章

网友评论

      本文标题:Chapter two《SpringCloud微服务实战》

      本文链接:https://www.haomeiwen.com/subject/zgincqtx.html