当前位置: 首页 > news >正文

浅尝springboot中的Actuator包(一)

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

在开发中,有时候我们想知道项目中在自己制定的bean有没有被注册上,环境属性,程序健康指标等等,幸好springboot已经帮我们做了这些,我们可以通过它所提供Actuator包下提供的13个端点来进行查看,下面就让一个简单的demo来简单看看Actuator提供了哪些东西吧.

 

先介绍一下开发环境:

  1. jdk版本是1.8
  2. springboot的版本是1.4.1
  3. 开发工具为 intellij idea

 

首先,我们先引入依赖,在项目中引入Acturtor包,添加如下内容

<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

 

引入包之后,我们直接启动项目,会发现日志增加打印了一些东西,大概如下:

190335_PW9w_2278977.png

 

 

 

可以发现,有13个端点.或者说是访问路径,从名字上可以看出一些端倪,例如: beans(估计是用于查看上下文中所有的bean),health(程序的健康度)等....这次,我们就先浅浅的测试几个吧,里面涉及到内容跟安全,一篇文章介绍不完,

 

下面列表,大概描述下13个端点分别是做什么的

Actuator13个路径简单概述

请求方式        

路径描述
GET/autoconfig一份自动配置报告,记录了哪些自动配置通过了,哪些没通过
GET/configprops描述属性配置注入的Bean信息     
GET/beans    应用程序下所有的Bean信息
GET/dump获取线程活动快照
GET/env获取全部的环境信息
GET/env/{name}根据名称获取特性的环境信息,例如properties下的某个属性信息
GET/health获取应用程序的健康指标
GET/info获取应用程序的有info开头的定制信息
GET/mappings获取全部的URL的映射关系
GET/metrics应用程序的度量信息,例如内存使用量,HTTP请求数
GET/metrics/{name}获取指定名称的应用程序信息
GET/shutdown

关闭应用程序,默认是false,可以通过endpoints.shutdown.enable=true开启

GET/trace获取HTTP请求的基本信息,例如:请求头,时间戳等

 

 

 

------------------------------------分割线-------------------------------------

我们首先测试 /beans 或者/beans.json 路径,查看上下文中有哪些bean被注册了

在浏览器输入 localhost:8080/beans(首先,确认,你没有更改本地服务器的端口号,如果修改了,对应修改后的端口就好了),会得到以下内容....

191750_5swd_2278977.png

 

PS:因为浏览器返回的,太乱了,我格式化了一下JSON,这样看起来会舒服一些,上面的截图只是一部分,自己测试会发现有很多内容,这就不截图了,这只是做一个展示作用.

上图可以发现,有很多字段,下面做个表格,列出每个字段的含义,以及表述

一级目录有三个字段,分别是context,parent,beans

  1. context:上下文名称,以及配置环境,端口号
  2. parent: 是否有父类,null表示无
  3. beans: 是个数组,内部包含应用内所有的bean
    1. bean: BeanID
    2. scope: Bean的作用域
    3. type: Bean在项目下的路径
    4. resource: 资源文件的完整路径
    5. dependencies: 当前Bean注入的beanID列表
    6. aliases: Bean是否有别名,没有的话,默认空数组

 

------------------------------------分割线-------------------------------------

接下来,我们测试一下 /env 或者 /env.json路径,查看下环境属性,例如:环境变量,JVM属性,properties或者yml文件提供的属性

 

在浏览器输入 localhost:8080/env,会得到一大堆内容,我也只展示一部分格式化后删除了一些我个人电脑信息的内容,下面内容会在属性后面添加注释,不在单独列出来说明了!!!

 

{
  "profiles": [ //读取的哪个环境的文件,
                //可以在yml或者properties文件内添加 spring.profiles.active=来执行,这里我指定的是test
    "test"
  ],
  "server.ports": {//服务器的端口号
    "local.server.port": 8081
  },
  "servletContextInitParams": {//servlet初始化的一些值,如果指定了,那么这里会显示
    
  },
  "applicationConfig: [classpath:/application.yml]#test": {//测试环境下指定添加的内容
    "spring.profiles": "test",
    "spring.jackson.generator": true,
    "amazon.bookName": "SpringBoot-test",
    "server.port": 8081
  },
  "applicationConfig: [classpath:/application.yml]": {//yml文件下,通用的一些配置属性
    "logging.level": "info",
    "logging.org.springframework.web": "info",
    "debug": false,
    "spring.profiles.active": "test"
  },
  "class path resource [userbean.properties]": {//properties文件下,一些配置属性
    "hexiaowu.name": "hexiaowu",
    "hexiaowu.userAge": "23",
    "hexiaowu.userName": "name",
    "hexiaowu.age": "23"
  }
}

 

从返回的东西,可以看到,一些系统环境属性,以及properties或者yml文件内的内容都显示出来了,PS:本来还有一个systemEnviromment的,我给删了,涉及到一些信息,不方便展示,见谅,读者测试的时候,可以查看自己的.

 

--------------------------------分割线-----------------------------------------

 

通过 /env/{name} 通过属性名来获取指定的属性信息,例如,我要获取hexiaowu.name对应的value,可以这么访问:http://localhost:8080/env/hexiaowu.name 会得到以下结果:

{"hexiaowu.name":"hexiaowu"}

 

 

--------------------------------分割线-----------------------------------------

 

最后,我们测试一下  /configprops或者/configprops.json路径,来获取配置属性注入的Bean信息等,

PS:下面只展示我配置的一些自定义属性,系统的属性,这就不展示了

 

访问以下路径:http://localhost:8080/configprops.json 或者http://localhost:808/configprops都可以,然后会得到一些内容,我下面就截取我配置的一些内容:

 

  "propertiesVo": {//注入的BeanID
    "prefix": "hexiaowu", //属性名称前缀
    "properties": { //属性名称以及值,对应Bean内的字段名称
      "name": "hexiaowu",
      "userName": "name",
      "age": "23",
      "userAge": "23"
    }
  }

 

 

 

以上,就是Actuator包下,13个路径下的三个,只是简单的开胃菜跟介绍而已

 

到这,文章就结束了!

以上,均为本人测试而得出的结果,可能会有出入,或者错误,欢迎指正

欢迎转载,请注明出处跟作者,谢谢!

转载于:https://my.oschina.net/u/2278977/blog/825157

相关文章:

  • 【使用教程】论Windows下必备的抓包工具Fiddler2如何安装证书(查看Https)
  • RPC学习
  • js动画(三)
  • Django admin 自定制
  • B4X 大疆 dji开发
  • 微软Azure首席架构师John Gossman就微软加入Linux基金会一事答疑
  • mysql5.5以上my.ini中设置字符集
  • Codeforces 758A Holiday Of Equality
  • redhat配置caffe
  • CCF201312-1 出现次数最多的数(100分)
  • 如何在Flutter工程中添加Android AAR文件
  • Confluence-企业知识管理与协同软件安装步骤
  • Mac下关闭Sublime Text 3的更新检查
  • AngularJS实现跨域请求
  • 云计算学习(3-3)云计算的由来-应运而生
  • [deviceone开发]-do_Webview的基本示例
  • 2017前端实习生面试总结
  • ES6, React, Redux, Webpack写的一个爬 GitHub 的网页
  • golang中接口赋值与方法集
  • Linux CTF 逆向入门
  • mysql_config not found
  • python_bomb----数据类型总结
  • SpiderData 2019年2月25日 DApp数据排行榜
  • SwizzleMethod 黑魔法
  • Tornado学习笔记(1)
  • 前端设计模式
  • 深度解析利用ES6进行Promise封装总结
  • 线上 python http server profile 实践
  • SAP CRM里Lead通过工作流自动创建Opportunity的原理讲解 ...
  • 测评:对于写作的人来说,Markdown是你最好的朋友 ...
  • ​DB-Engines 11月数据库排名:PostgreSQL坐稳同期涨幅榜冠军宝座
  • ​LeetCode解法汇总307. 区域和检索 - 数组可修改
  • #LLM入门|Prompt#2.3_对查询任务进行分类|意图分析_Classification
  • (pojstep1.3.1)1017(构造法模拟)
  • (zt)基于Facebook和Flash平台的应用架构解析
  • (黑马出品_高级篇_01)SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式
  • (三) diretfbrc详解
  • (十二)springboot实战——SSE服务推送事件案例实现
  • (实战篇)如何缓存数据
  • (已解决)报错:Could not load the Qt platform plugin “xcb“
  • *Algs4-1.5.25随机网格的倍率测试-(未读懂题)
  • .NET Core WebAPI中使用Log4net 日志级别分类并记录到数据库
  • .Net IOC框架入门之一 Unity
  • .NET Micro Framework 4.2 beta 源码探析
  • .net 使用$.ajax实现从前台调用后台方法(包含静态方法和非静态方法调用)
  • .NET 中什么样的类是可使用 await 异步等待的?
  • @DataRedisTest测试redis从未如此丝滑
  • [ 隧道技术 ] 反弹shell的集中常见方式(四)python反弹shell
  • [2018/11/18] Java数据结构(2) 简单排序 冒泡排序 选择排序 插入排序
  • [ai笔记4] 将AI工具场景化,应用于生活和工作
  • [C++]C++类基本语法
  • [C++]C++入门--引用
  • [java]删除数组中的某一个元素
  • [LeetCode]—Anagrams 回文构词法
  • [LeetCode]-Pascal's Triangle III 杨辉三角问题