文档章节

Spring Cloud Alibaba 实战(二) - 关于Spring Boot你不可不知道的实情

J
 JavaEdge
发布于 09/18 01:05
字数 1251
阅读 20
收藏 0

0 相关源码

1 什么是Spring Boot

一个快速开发的脚手架

作用

快速创建独立的、生产级的基于Spring的应用程序

特性

  • 无需部署WAR文件
  • 提供starter简化配置
  • 尽可能自动配置Spring以及第三方库
  • 提供“生产就绪”功能,例如指标、健康检查、外部配置等
  • 无代码生成&无XML

2 编写一个Spring Boot应用

2.1 需求

  • 整合Spring MVC
  • /test路径(端点)

2.2 使用Spring Initializr快速创建Spring Boot应用

  • 编写测试代码
  • 运行输出

也可以使用

  • mvn clean install确保打包成功
  • java -jar 运行程序

3 组成分析

  • pom.xml

  • 配置文件

  • static目录 存放静态文件

  • template目录 存放模板文件,已过时

4 开发利器

添加依赖

写注解

写配置

5 Spring Boot Actuator

什么是Spring Boot Actuator

整合

健康信息

健康信息可以检查应用的运行状态,它经常被监控软件用来提醒人们生产环境是否存在问题。health端点暴露的默认信息取决于端点是如何被访问的。对于一个非安全,未认证的连接只返回一个简单的'status'信息。对于一个安全或认证过的连接其他详细信息也会展示 Spring Boot包含很多自动配置的HealthIndicators,你也可以写自己的。

自动配置的HealthIndicators

Spring Boot在合适的时候会自动配置以下HealthIndicators:

  • 下表显示了内置状态的默认状态映射:

  • 让我们配置一下health节点,并重启应用

  • 可看到对于磁盘的监控信息

应用信息

应用信息会暴露所有InfoContributor beans收集的各种信息,Spring Boot包含很多自动配置的InfoContributors,你也可以编写自己的实现。

自动配置的InfoContributors

Spring Boot会在合适的时候自动配置以下InfoContributors:

> 注 使用management.info.defaults.enabled属性可禁用以上所有InfoContributors。

自定义应用info信息

通过设置Spring属性info.*,你可以定义info端点暴露的数据。所有在info关键字下的Environment属性都将被自动暴露,例如,你可以将以下配置添加到application.properties:

info.app.encoding=UTF-8
info.app.java.source=1.8
info.app.java.target=1.8

注 你可以在构建时扩展info属性,而不是硬编码这些值。假设使用Maven,你可以按以下配置重写示例:

info.app.encoding=@project.build.sourceEncoding@
info.app.java.source=@java.version@
info.app.java.target=@java.version@

Git提交信息

info端点的另一个有用特性是,在项目构建完成后发布git源码仓库的状态信息。如果GitProperties bean可用,Spring Boot将暴露git.branch,git.commit.id和git.commit.time属性。

> 注 如果classpath根目录存在git.properties文件,Spring Boot将自动配置GitProperties bean。查看Generate git information获取更多详细信息。

使用management.info.git.mode属性可展示全部git信息(比如git.properties全部内容):

management.info.git.mode=full

构建信息

如果BuildProperties bean存在,info端点也会发布你的构建信息。

注 如果classpath下存在META-INF/build-info.properties文件,Spring Boot将自动构建BuildProperties bean。Maven和Gradle都能产生该文件

  • 配置info

  • 启动观察输出信息

  • SpringBoot支持很多端点,除了默认显示的几个,还可以激活暴露所有端点

  • 如果只想暴露某个端点也是可以的

  • 查看JVM最大内存

6 Spring Boot配置管理

yml配置

  • 注意缩进同一与冒号左右的空格
  • 注意与properties文件的不同

配置管理的各种姿势

配置管理常用方式

  • 配置文件
  • 环境变量
  • 外部配置文件 会读取和jar文件相同路径下的配置文件,且优先级高于jar配置
  • 命令行参数

> 尽量保持配置最简单且统一,规避优先级冲突问题!

7 Profile

不同环境不同配置

使用

  • yml配置文件

  • 添加参数并启动程序

  • 查看端点以确认信息

  • 那么如果不指定参数呢,又运行的何种环境呢,让我们来看一下:

  • 默认是default,难道我非要将dev环境改为default才可以使用默认配置?显然SpringBoot另辟蹊径:

如果不是yml文件,而是用properties配置呢

  • 指定参数
  • 默认dev
  • 注意先将启动参数prod关闭,避免配置优先级冲突!

8 总结

  • 使用Spring Initializr快速创建应用
  • 应用组成分析
  • 开发三部曲
  • Actuator
  • 配置管理
  • Profile

参考

Spring Boot官方文档

© 著作权归作者所有

J
粉丝 0
博文 44
码字总数 141145
作品 0
南京
私信 提问
Spring Cloud Alibaba与Spring Boot、Spring Cloud之间不得不说的版本关系

这篇博文是临时增加出来的内容,主要是由于最近连载《Spring Cloud Alibaba基础教程》系列的时候,碰到读者咨询的大量问题中存在一个比较普遍的问题:版本的选择。其实这类问题,在之前写Spr...

程序猿DD
03/03
536
0
说说我为什么看好Spring Cloud Alibaba

最近对《Spring Cloud Alibaba基础教程》系列的催更比较多,说一下最近的近况:因为打算Spring Boot 2.x一起更新。所以一直在改博客Spring Boot专题页和Git仓库的组织。由于前端技术太过蹩脚...

程序猿DD
03/29
212
0
alibaba限流组件Sentinel实战

序 本文主要研究一下如何使用alibaba开源的限流组件Sentinel maven spring-cloud-starter-sentinel在maven仓库没有的话自己本地install一下 配置 这里指定应用的端口为8080,与sentinel serv...

go4it
2018/08/12
1K
0
厉害了,Spring Cloud for Alibaba 来了!

最近,Spring Cloud 发布了 Spring Cloud Alibaba 首个预览版本:Spring Cloud for Alibaba 0.2.0. 大家都好奇,这和阿里巴巴有什么关系?莫非是给阿里巴巴定制了一个 Spring Cloud ? 其实也...

Java技术栈
2018/11/22
854
2
阿里巴巴开源 Spring Cloud Alibaba,加码微服务生态建设

本周,Spring Cloud联合创始人Spencer Gibb在Spring官网的博客页面宣布:阿里巴巴开源 Spring Cloud Alibaba,并发布了首个预览版本。随后,Spring Cloud 官方Twitter也发布了此消息,以下翻...

中间件小姐姐
2018/11/02
32.9K
27

没有更多内容

加载失败,请刷新页面

加载更多

Echars鼠标点击事件多次触发

本文转载于:专业的前端网站➭Echars鼠标点击事件多次触发 gChart.on('click', function (params) { if (params.componentSubType == "bar" && params.componentType == "serie......

前端老手
21分钟前
3
0
springboot2.0.6(附) 解析META-INF/spring.factories通过系统加载类获取对应的 class 的全限定名称

在 SpringBoot中是通过getSpringFactoriesInstances(Class<T> type)方法获取所有classpath下面的META-INF/spring.factories文件,然后根据type值找到对应的 class 的全限定名称列表。下面我来...

小亮89
22分钟前
4
0
zk工厂方法实现NIOServerCnxnFactory

NIOServerCnxnFactory类 内部类 AbstractSelectThread AcceptThread SelectorThread 属性 ZOOKEEPER_NIO_SESSIONLESS_CNXN_TIMEOUT 10s session过期时间 ZOOKEEPER_NIO_NUM_SELECTOR_THREADS......

writeademo
26分钟前
3
0
天猫精灵业务如何使用机器学习PAI进行模型推理优化

作者:如切,悟双,楚哲,晓祥,旭林 引言 天猫精灵(TmallGenie)是阿里巴巴人工智能实验室(Alibaba A.I.Labs)于2017年7月5日发布的AI智能语音终端设备。天猫精灵目前是全球销量第三、中国...

阿里云官方博客
33分钟前
5
0
BJL技巧之大路馆擦法—《利辰逸》

很多朋友刚玩百佳时间不长,不知道如何看路,今 天我就来简单的讲下看大路的方法。 都是前辈教的,这里我只是简单复述一下。 大路的观察方法有以下几种: 先从庄闲的数量变化说起。 庄闲的强...

那女孩对我说
34分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部