27.自定义EndPoint

1.自定义EndPoint简介
spring-boot-starter-actuator模块中已经提供了大量原生端点,根据端点作用,可将原生端点分为以下三类。
应用配置类:获取应用程序中加载的应用配置、环境变量、自动化配置报告等与SpringBoot应用密切相关的配置类信息。
度量指标类:获取应用程序在运行过程中用于监控的度量指标,如内存信息、线程池信息和HTTP请求统计等。
操作控制类:提供了对应用的关闭等操作类功能。
如果spring-boot-starter-actuator模块提供的原生端点无法满足需求,开发者还可以自定义端点,如本小节使用自定义UserEndPoint来监控用户总数。

2.引入依赖
新建一个SpringBoot工程,并在pom.xml文件中添加自定义EndPoint所需要的dependency。

<dependency>
	<groupId>mysql</groupId>
	<artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
	<groupId>org.mybatis.spring.boot</groupId>
	<artifactId>mybatis-spring-boot-starter</artifactId>
	<version>1.1.1</version>
</dependency>
<dependency>
	<groupId>org.projectlombok</groupId>
	<artifactId>lombok</artifactId>
	<version>1.18.2</version>
	<scope>provided</scope>
</dependency>
<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

3.添加配置
在application.properties文件中添加如下配置信息。

############################################################
#
# MySQL配置
#
############################################################
### 连接信息
spring.datasource.url = jdbc:mysql://localhost:3306/mydb
### 用户名
spring.datasource.username = root
### 密码
spring.datasource.password = admin123
### 驱动
spring.datasource.driver-class-name = com.mysql.cj.jdbc.Driver

############################################################
#
# MyBatis配置
#
############################################################
### po类存放目录
mybatis.type-aliases-package = com.leichuangkj.endpoint.dao.po
### mapper(.xml)资源文件存放路径
mybatis.mapper-locations = classpath:mybatis/mapper/*.xml

############################################################
#
# 应用监控配置
#
############################################################
### 指定访问监控方法的端口
management.server.port = 8080
### 开启所有端点
management.endpoints.web.exposure.include = *
### 启用userEndPoints端点并禁用其它所有端点
management.endpoints.enabled-by-default = false
management.endpoints.userEndPoint.enabled = true

4.dao层开发
首先在项目目录“/src/main/java/com/leichuangkj/endpoint”下新建“/dao/po”目录,并在po目录下新建User实体类,具体代码如下。

@Data
@NoArgsConstructor
@AllArgsConstructor
@ToString
public class User {
    private Integer id;

    private String name;

    private String email;
}

然后在dao目录下新建mapper目录,并在mapper目录下新建UserMapper接口,具体代码如下。

@Repository
public interface UserMapper {
    Integer getTotalNum();
}

最后在resource目录下新建“mybatis/mapper”目录,并在mapper目录下新建UserMapper.xml文件,具体代码如下。

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.leichuangkj.endpoint.dao.mapper.UserMapper" >
    <select id="getTotalNum" resultType="java.lang.Integer">
        select  count(1) from user
    </select>
</mapper>

5.service层开发
在项目目录“/src/main/java/com/leichuangkj/endpoint”下新建service目录,并在service目录下新建IUser接口,具体代码如下。

public interface IUser {
    Integer getTotalNum();
}

然后在service目录下新建impl目录,并在impl目录下新建UserImpl实现类,具体代码如下。

@Service
public class UserImpl implements IUser {
    @Autowired
    UserMapper userMapper;

    @Override
    public Integer getTotalNum() {
        return userMapper.getTotalNum();
    }
}

6.endpoint开发
在项目目录“/src/main/java/com/leichuangkj/endpoint”下新建actuator目录,并在actuator目录下新建UserEndPoint类,具体代码如下。

@Component
@Endpoint(id = "userEndPoint")
public class UserEndPoint{
    @Autowired
    private UserImpl userImpl;

    @ReadOperation
    public Map<String,Object> invoke(){
        Map<String,Object> map = new HashMap<>();
        map.put("currentTime",new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
        map.put("userTotal",userImpl.getTotalNum());
        return map;
    }
}

7.启动项目
在启动类EndpointApplication上添加注解“@MapperScan(basePackages = “com.leichuangkj.endpoint.dao.mapper”)”,然后启动项目。

@MapperScan(basePackages = "com.leichuangkj.endpoint.dao.mapper")
@SpringBootApplication
public class EndpointApplication {
	public static void main(String[] args) {
		SpringApplication.run(EndpointApplication.class, args);
	}
}

8.测试
启动项目,然后在浏览器中请求“http://localhost:8080/actuator”,可以查询到如下图所示的信息。
在这里插入图片描述
点击“http://localhost:8080/actuator/userEndPoint”查看数据库用户总人数,测试结果如下图所示。
在这里插入图片描述

9.工程目录结构
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值