2019独角兽企业重金招聘Python工程师标准>>>
在开发中,有时候我们想知道项目中在自己制定的bean有没有被注册上,环境属性,程序健康指标等等,幸好springboot已经帮我们做了这些,我们可以通过它所提供Actuator包下提供的13个端点来进行查看,下面就让一个简单的demo来简单看看Actuator提供了哪些东西吧.
先介绍一下开发环境:
- jdk版本是1.8
- springboot的版本是1.4.1
- 开发工具为 intellij idea
首先,我们先引入依赖,在项目中引入Acturtor包,添加如下内容
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency>
引入包之后,我们直接启动项目,会发现日志增加打印了一些东西,大概如下:
可以发现,有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(首先,确认,你没有更改本地服务器的端口号,如果修改了,对应修改后的端口就好了),会得到以下内容....
PS:因为浏览器返回的,太乱了,我格式化了一下JSON,这样看起来会舒服一些,上面的截图只是一部分,自己测试会发现有很多内容,这就不截图了,这只是做一个展示作用.
上图可以发现,有很多字段,下面做个表格,列出每个字段的含义,以及表述
一级目录有三个字段,分别是context,parent,beans
- context:上下文名称,以及配置环境,端口号
- parent: 是否有父类,null表示无
- beans: 是个数组,内部包含应用内所有的bean
- bean: BeanID
- scope: Bean的作用域
- type: Bean在项目下的路径
- resource: 资源文件的完整路径
- dependencies: 当前Bean注入的beanID列表
- 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个路径下的三个,只是简单的开胃菜跟介绍而已
到这,文章就结束了!
以上,均为本人测试而得出的结果,可能会有出入,或者错误,欢迎指正
欢迎转载,请注明出处跟作者,谢谢!