目标
项目搭建,整合actuator
开干
1.创建项目通过idea的Initializr快速创建
如图,首先创建了整理工程pay-template-framework,随后先创建了子moudle:udm-server。
这是我们第一个项目模块,后面业务模块在介绍其作用,下面先看整合actuator。
actuator是spring boot项目中非常强大的一个功能,有助于对应用程序进行监控和管理,通过restful api请求来监管、审计、收集应用的运行情况。
| uri | 说明 | 敏感信息需要开启权限访问 | 
|---|---|---|
| auditevents | 显示当前应用程序的审计事件信息 | Yes | 
| beans | 显示应用Spring Beans的完整列表 | Yes | 
| conditions | 显示自动装配类的状态及及应用信息 | Yes | 
| configprops | 显示所有 @ConfigurationProperties 列表 | Yes | 
| env | 显示 ConfigurableEnvironment 中的属性 | Yes | 
| flyway | 显示 Flyway 数据库迁移信息 | Yes | 
| health | 显示应用的健康信息(未认证只显示status,认证显示全部信息详情) | no | 
| info | 显示任意的应用信息(在资源文件写info.xxx即可) | no | 
| metrics | 展示当前应用的 metrics 信息 | Yes | 
| mappings | 显示所有 @RequestMapping 路径集列表 | Yes | 
| scheduledtasks | 显示应用程序中的计划任务 | Yes | 
| sessions | 允许从Spring会话支持的会话存储中检索和删除用户会话 | Yes | 
| shutdown | 允许应用以优雅的方式关闭(默认情况下不启用),通过endpoints.shutdown.enabled: true配置 | Yes | 
| dump | 显示应用dump | Yes | 
| httptrace | 显示HTTP跟踪信息(默认显示最后100个HTTP请求 - 响应交换) | Yes | 
下面看使用方法:
- 首先加入依赖
 
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
        <!--spring-boot-starter-security 安全机制,对应actuator敏感信息需进行账号密码访问 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-security</artifactId>
        </dependency>
- application.yml配置
 
server:
port: 8000
info:
app:
  name: @project.artifactId@
head: head
body: body
endpoints:
shutdown:
  enabled: true
  id: shut
beans:
  enabled: false
security:
basic:
  enabled: true
user:
  name: root
  password: 12
spring:
Jackson:
  serialization:
    indent-output: true
如上配置,此时shutdown的uri将改为shut,并且此时开启了账号密码访问,如下
curl -d dd=dd http://root:12@localhost:8000/shut
页面访问可以直接输入账号密码(也可以通过management: security: enabled: true配置关闭安全检查,不过生产不推荐).
- 自定义endpoints入口
 
package open.template.work.udm.udm.server.endpoint;
import org.springframework.boot.actuate.endpoint.AbstractEndpoint;
import org.springframework.boot.context.properties.ConfigurationProperties;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
@ConfigurationProperties(prefix = "endpoints.systemTime")
public class MyEndPoint extends AbstractEndpoint<Map<String, Object>> {
    public MyEndPoint() {
        //参数=名字,是否敏感
        super("systemTime", false);
    }
    @Override
    public Map<String, Object> invoke() {
        Map<String, Object> result = new HashMap<String, Object>();
        Date dateTime = new Date();
        result.put("当前时间", dateTime.toString());
        result.put("当前时间戳", dateTime.getTime());
        return result;
    }
}
注册配置类
package open.template.work.udm.udm.server;
import open.template.work.udm.udm.server.endpoint.MyEndPoint;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.actuate.endpoint.Endpoint;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import java.util.Map;
@SpringBootApplication
@Configuration
public class UdmServerApplication {
    public static void main(String[] args) {
        SpringApplication.run(UdmServerApplication.class, args);
    }
    @Bean
    public static Endpoint<Map<String, Object>> servertime() {
        return new MyEndPoint();
    }
}
此时访问配置节点:

参考文档: http://www.cnblogs.com/zeryts/p/8654970.html










