SpringBoot JMX的基本使用方式

1. 声明

当前内容主要为学习和使用SpringBoot注册JMX的操作,主要方便管理需要的类

当前内容来源:SpringBoot官方文档

主要内容为:

  1. 使用SpringBoot注册JMX中的MBean
  2. 使用jconsole查看和修改属性

基本的pom依赖

<parent>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-parent</artifactId>
	<version>2.2.13.RELEASE</version>
</parent>
<properties>
	<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>

<dependencies>
	<dependency>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-web</artifactId>
	</dependency>
</dependencies>
2. 基本demo

application.properties的内容

spring.jmx.enabled=true

mysqldb.properties的内容

jdbc.driverClassName=com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/test?serverTimezone=UTC&useUnicode=true&characterEncoding=UTF-8
jdbc.username=root
jdbc.password=123456
# mysql connector timeout check 
jdbc.maxIdle=216000
jdbc.validationQuery=select 1
jdbc.validationQueryTimeout=1800
jdbc.testOnBorrow=true
jdbc.testWhileIdle=true

配置类AppConfig

@Configuration
@PropertySource(value = {"mysqldb.properties"})
@EnableConfigurationProperties(value = { MySQLDBProperties.class})
public class AppConfig {
}

MySQLDBProperties

import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.jmx.export.annotation.ManagedAttribute;
import org.springframework.jmx.export.annotation.ManagedResource;

/**
 * @description 当前内容主要为对应SQLServerDB的数据库配置文件中的属性
 * @author hy
 * @createTime 2021-03-31 13:26:36
 **/
@ConfigurationProperties(prefix = "jdbc")
@ManagedResource("com.hy.springboot.jmx.test.properties:type=MySQLDBProperties,name=MySQLDBProperties")
public class MySQLDBProperties {
	private String url;
	private String driverClassName;
	private String username;
	private String password;
	private Integer maxIdle;
	private Integer validationQueryTimeout;
	private String validationQuery;
	private Boolean testOnBorrow; // 是否在使用的时候进行检查操作
	private Boolean testWhileIdle;// 测试是否已经不能使用了

	@ManagedAttribute
	public Boolean getTestOnBorrow() {
		return testOnBorrow;
	}

	@ManagedAttribute
	public void setTestOnBorrow(Boolean testOnBorrow) {
		this.testOnBorrow = testOnBorrow;
	}

	@ManagedAttribute
	public Boolean getTestWhileIdle() {
		return testWhileIdle;
	}

	@ManagedAttribute
	public void setTestWhileIdle(Boolean testWhileIdle) {
		this.testWhileIdle = testWhileIdle;
	}

	@ManagedAttribute
	public Integer getValidationQueryTimeout() {
		return validationQueryTimeout;
	}

	@ManagedAttribute
	public void setValidationQueryTimeout(Integer validationQueryTimeout) {
		this.validationQueryTimeout = validationQueryTimeout;
	}

	@ManagedAttribute
	public String getValidationQuery() {
		return validationQuery;
	}

	@ManagedAttribute
	public void setValidationQuery(String validationQuery) {
		this.validationQuery = validationQuery;
	}

	@ManagedAttribute
	public Integer getMaxIdle() {
		return maxIdle;
	}

	@ManagedAttribute
	public void setMaxIdle(Integer maxIdle) {
		this.maxIdle = maxIdle;
	}

	@ManagedAttribute
	public String getUrl() {
		return url;
	}

	@ManagedAttribute
	public void setUrl(String url) {
		this.url = url;
	}

	@ManagedAttribute
	public String getDriverClassName() {
		return driverClassName;
	}

	@ManagedAttribute
	public void setDriverClassName(String driverClassName) {
		this.driverClassName = driverClassName;
	}

	@ManagedAttribute
	public String getUsername() {
		return username;
	}

	@ManagedAttribute
	public void setUsername(String username) {
		this.username = username;
	}

	@ManagedAttribute
	public String getPassword() {
		return password;
	}

	@ManagedAttribute
	public void setPassword(String password) {
		System.out.println("设置新的密码为:" + password);
		this.password = password;
	}
}

主要借助:@ManagedAttribute和@ManagedResource来实现操作

入口类:基本的main方法

3. 执行结果

E8F68DB2-474B-49D0-1F57-1ABEEEA40715.png

使用jconsole连接并查看MBean结果

7F0D3CC6-6C7B-1877-27CA-CB90A0EA33E9.png

ED3749B6-D126-CD84-C71B-8660BB74EFEC.png

使用JMX可将一些需要的信息注册,然后通过jconsole动态查看运行中的属性,也可以修改属性

收藏 (0)
评论列表
正在载入评论列表...
我是有底线的
为您推荐
    暂时没有数据