高品质的音视频能力是怎样的? | Qcon 全球软件开发大会·上海站邀请函 了解详情
写点什么

Spring Boot 2.0 将会增强 Actuator 端点的特性

  • 2017-09-14
  • 本文字数:1729 字

    阅读完需:约 6 分钟

即将发布的 Spring Boot 2.0.0 M4 将会增强 actuator 端点基础设施的特性。最重要的变更包括:

  • 支持 Jersey RESTful Web 服务
  • 支持基于反应式理念的 WebFlux Web App
  • 新的端点映射
  • 简化用户自定义端点的创建
  • 增强端点的安全性

Spring Boot 的 actuator 端点允许监控 Web 应用,并且可以与 Web 应用进行交互。在此之前,这些端点只支持 Spring MVC,如果创建自定义端点的话,需要大量额外的编码和配置。

端点映射

内置的端点,比如/beans/health等等,现在都映射到了/application根上下文下。比如,之前 Spring Boot 版本中的/beans现在需要通过/application/beans进行访问。

创建用户自定义的端点

新的@Enpoint注解简化了创建用户自定义端点的过程。如下的样例创建了名为person的端点。(完整的示例应用可以在 GitHub 上查看。)

复制代码
@Endpoint(id = "person")
@Component
public class PersonEndpoint {
private final Map<String, Person> people = new HashMap<>();
PersonEndpoint() {
this.people.put("mike", new Person("Michael Redlich"));
this.people.put("rowena", new Person("Rowena Redlich"));
this.people.put("barry", new Person("Barry Burd"));
}
@ReadOperation
public List<Person> getAll() {
return new ArrayList<>(this.people.values());
}
@ReadOperation
public Person getPerson(@Selector String person) {
return this.people.get(person);
}
@WriteOperation
public void updatePerson(@Selector String name, String person) {
this.people.put(name, new Person(person));
}
public static class Person {
private String name;
Person(String name) {
this.name = name;
}
public String getName() {
return this.name;
}
public void setName(String name) {
this.name = name;
}
}
}

这个端点借助@ReadOperation@WriteOperation注解暴露了三个方法。这个端点的定义不再需要额外的代码,它可以通过/application/person/application/person/{name}进行访问。另外,这个端点同时还会自动部署为 JMX MBean ,可以通过像 JConsole 这样的 JMX 客户端来访问。

增强端点的安全性

Spring Boot 2.0 采用一种稍微不同的方式来确保 Web 端点默认的安全性。Web 端点默认是禁用的, management.security.enabled属性已经被移除掉了。单个端点可以通过application.properties文件中的配置来启用。比如:

复制代码
endpoints.info.enabled=true
endpoints.beans.enabled=true

但是,我们还可以把endpoints.default.web.enabled属性设置为true,从而将 actuator 和用户自定义的所有端点暴露出去。

Stéphane Nicoll 是 Pivotal 的首席软件工程师,关于 actuator 的端点事宜,InfoQ 与他进行了交流。

InfoQ:升级 actuator 端点来支持 Jersey 和 WebFlux 的过程中,您能描述一下您的体验吗?

Stéphane Nicoll:同时支持基于 servlet 的传统环境以及基于 reactive 理念的 Web App 是一个很大的挑战,尤其是在处理可扩展性特性方面更是如此。

InfoQ:Spring 因为其紧凑且定义良好的 API 而闻名。这次重构又是怎样处理的呢?

Nicoll:在框架团队中,“spring-webmvc”和“spring-webflux”共享了很多来自“spring-web”的特性,其中我们可以看到很多创造性的设计。构建抽象是非常困难的,我非常开心我们在另外一个层级上完成了相同的事情。

InfoQ:驱动架构变化的原则是什么呢?

Nicoll: Spring Boot 2.0 主要关注于搭建坚实的基础和良好的共识:我们相信这个新的端点基础设施方向是正确的,它所针对的是生产环境的特性,我们期待来自社区的反馈。

InfoQ:Spring Boot 2.0 GA 版本预期会在何时发布?

Nicoll:事情尚不确定(双关语,这里原文使用的是 flux,可能同时指不确定性和对 WebFlux 的支持),但是我们目前的计划是在年底释放 Spring Boot 2.0 GA。

参考资料

查看英文原文 Spring Boot 2.0 Will Feature Improved Actuator Endpoints

2017-09-14 19:006494

评论

发布
暂无评论
发现更多内容

软件架构-缓存技术

看山

缓存 架构

你不可不知的任务调度神器-AirFlow

王知无

spark 数据可视化 airflow

第 13 周 系统架构作业

心在那片海

第八作业

Binary

什么是VXLAN

面试官:Netty的线程模型可不只是主从多Reactor这么简单

中间件兴趣圈

reactor Netty nio 中间件 线程模型

最长公共前缀字符串, RxSwift的概念详细解析, 极客大学认识产品经理 John 易筋 ARTS 打卡 Week 35

John(易筋)

ARTS 打卡计划 最长公共前缀字符串 RxSwift的概念详细解析 极客大学认识产品经理 极客大学产品经理训练营

产品第一周

骏马

SQL 正则表达式

.

28天写作

Soul 网关源码阅读(六)Sofa请求处理概览

Java 源码阅读 网关

产品训练营第一周作业

孤星

第13周作业

hunk

架构师训练营第2期

第八周学习总结

Binary

Spring-Spring整合MyBatis原理分析

魔曦

第一周作业

Au revoir

如何 debug hive 源码,知其然知其所以然

王凯

hive 源码分析

第 13 周 系统架构总结

心在那片海

与前端训练营的日子 --Week12

SamGo

学习

外星人?他们在哪儿呢?「幻想短篇 10/28」

道伟

28天写作

Week 13 数据应用

evildracula

学习 架构

架构2期-第十三周作业(1)

浮生一梦

第十三周 2组 架构师训练营第2期

英雄惜英雄-当Spark遇上Zeppelin之实战案例

王知无

大数据 spark

28天瞎写的第二百二十一天:争论 IBM AIX 版本号,只因好强?

树上

28天写作

架构师训练营 4 期 第3周

引花眠

架构师训练营 4 期

长期主义是一种生活态度

JiangX

28天写作 价值 长期主义

2021年第4周工作学习计划

IT蜗壳-Tango

计划 七日更

Week13 作业

evildracula

架构

HDFS杂谈:Xattrs扩展属性

罗小龙

hadoop hdfs 28天写作

新名词意味着什么?

lidaobing

28天写作 名词

绩效管理,上下同心者胜(二)

一笑

管理 绩效 28天写作

十三周作业

落朽

Spring Boot 2.0将会增强Actuator端点的特性_Java_Michael Redlich_InfoQ精选文章