如上2.4中所述,传统spring工程中工程的初始化过程,bean的生命周期,应用的内部健康状况均没法监控,为了解决这个问题,spring boot提供了Actuator执行器。html
下面具体介绍什么是Actuator,以及怎么使用。git
3.1.1. 加入依赖github
加入以下Starter pom:spring
<dependency>数据库
<groupId>org.springframework.boot</groupId>json
<artifactId>spring-boot-starter-actuator</artifactId>安全
</dependency>app
3.1.2.配置ide
在application.properties配置文件中加入配置:spring-boot
management.security.enabled=false
注:因
Actuator
会将应用内部信息的端点暴露出来,这样就会产生安全问题,
Spring Boot
默认将
Spring
security
加入了工程,所以默认此配置是
true
,禁用安全以便测试。
3.1.3.启动
直接Run as JavaApplication启动便可。
3.1.4 测试
测试结果如上
直接访问http://localhost:8080/beans便可。
返回的json文档为应用内上下文全部的Bean以及相互关系等。
Spring Boot Actuator的关键特性是在应用程序里提供众多Web端点,经过它们了解应用程序运行时的内部情况。有了Actuator,你能够知道Bean在Spring应用程序上下文里是如何组装在一块儿的,掌握应用程序能够获取的环境属性信息,获取运行时度量信息的快照等等。
Actuator提供了13个端点:
HTTP方法 路 径 描 述
GET/autoconfig提供了一份自动配置报告,记录哪些自动配置条件经过了,哪些没经过
GET/configprops描述配置属性(包含默认值)如何注入Bean
GET/beans描述应用程序上下文里所有的Bean,以及它们的关系
GET/dump获取线程活动的快照
GET/env获取所有环境属性
GET/env/{name}根据名称获取特定的环境属性值
GET/health报告应用程序的健康指标,这些值由HealthIndicator的实现类提供
GET/info获取应用程序的定制信息,这些信息由info打头的属性提供
GET/mappings描述所有的URI路径,以及它们和控制器(包含Actuator端点)的映射关系
GET/metrics报告各类应用程序度量信息,好比内存用量和HTTP请求计数
GET/metrics/{name}报告指定名称的应用程序度量值
POST/shutdown关闭应用程序,要求endpoints.shutdown.enabled设置为true
GET/trace提供基本的HTTP请求跟踪信息(时间戳、HTTP头等)
具体每个端点的详细状况请阅读《Spring Boot实战》—丁雪丰 第七章 深刻Actuator。
笔者提供电子版书籍,在此再也不赘述。本章笔者着重介绍如何配置使用Actuator。
关于Actuator的配置项,可查看Spring官网Spring Boot ReferenceGuide 中Commonapplication properties章节。
虽然Actuator的端点都颇有用,但你不必定须要所有这些端点。默认状况下,全部端点(除
了/shutdown)都启用。将endpoints.endpoint-id.enabled设置为false,便可禁用端点,将endpoints.endpoint-id.enabled设置为true,便可启动端点。
测试禁用端点:修改配置文件,加入endpoints.beans.enabled=false。启动后访问:
若是想修改端点的固定id为定制id,加入配置:endpoints.*.id=newId便可。
测试:配置文件中加入endpoints.beans.id=springbeans启动后访问:
Actuator还把它的端点以MBean的方式发布了出来,能够经过JMX来查看和管理。Actuator的端点都发布在org.springframework.boot域下。使用jcnsole.exe查看以下:
从/metrics端点得到运行中应用程序的内部度量信息,包括内存、垃圾回收和线程信息等,若是还想定义本身的度量,方式以下:
l Spring提供以下两个接口及其用途:
CounterService这个接口里定义了三个方法,分别用来增长、减小或重置特定名称的度量值,代码以下:
packageorg.springframework.boot.actuate.metrics;
publicinterface CounterService {
voidincrement(String metricName);
voiddecrement(String metricName);
voidreset(String metricName);
}
GaugeService接口与CounterService相似,能将某个值记录到特定名称的度量值里。
packageorg.springframework.boot.actuate.metrics;
publicinterface GaugeService {
voidsubmit(String metricName, double value);
}
Spring Boot已经提供了二者的实现。咱们所要作的就是把它们的实例注入所需的Bean,在适当的时候调用其中的方法,更新想要的度量值便可。
编写代码以下:
l 启动测试
另:关于Bean的注入可使用另一种方式:
关于Actuator还有更多的使用方式,如添加自定义跟踪仓库,插入自定义健康指标等。
笔者不在演示,若有兴趣,可参考《Spring Boot实战》。
实际应用中为了将暴露的端点与应用的业务接口区分开,或者便于进行安全控制,以及便于根据端点深刻开发使用监控信息,可能须要将暴露的端点进行分组。
在配置文件中加入配置:
management.context-path=/endpoints
启动测试:
3.3.6.1使用SpringSecurity配置项
应用的安全机制,咱们可使用Spring Security,Spring Security是针对整个应用的,使用后访问应用,会弹出HTTP基础身份验证对话框。
l 加入依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
l 加入配置
security.user.name=admin
security.user.password=admin
management.security.roles=SUPERUSER
l 启动测试
输入配置密码便可,通常开发中不会使用配置文件进行应用权限的管理,而是会结合数据库或LDAP使用。
3.3.6.2自定义安全配置
咱们可使用自定义安全配置覆盖自动配置的选项,此处不在详细介绍,后续章节将详细价绍SpringBoot集成Spring Security的具体使用。
<实例代码>
Github:https://github.com/chunyuding/SpringBoot-Demo
https://github.com/chunyuding/SpringBoot-Demo.git
码云:https://gitee.com/dingchunyu/SpringBoot-Demo
https://gitee.com/dingchunyu/SpringBoot-Demo.git
<推荐书籍>
百度云:http://pan.baidu.com/s/1qYA0Nxi