当前位置:网站首页>How to use Arthas to view class variable values

How to use Arthas to view class variable values

2022-07-07 09:00:00 bboyzqh

Use arthas The core idea of viewing class variable values is : By implementing ApplicationContextAware Interface definition ApplicationUtil class , This class can get ApplicationContext All of Bean example , And then through arthas Of ognl View the property value in the class instance .

Easy to build Spring Boot engineering

1. pom rely on

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>zqh.test</groupId>
    <artifactId>SpringBootTest</artifactId>
    <version>1.0-SNAPSHOT</version>

    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
    </properties>


    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.5.19.RELEASE</version>
    </parent>


    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
        </dependency>
    </dependencies>


    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
</project>

2. Spring Boot Start class

package com.zqh.main;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

/**
 * @author fangchen
 * @date 2022-01-08 14:33
 */
@SpringBootApplication(scanBasePackages = {"com.zqh.bean"})
public class Application {

    public static void main(String[] args) {

        SpringApplication.run(Application.class, args);

    }
}

3. Realization ApplicationContextAware Interface tool class

package com.zqh.bean;

import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.stereotype.Component;

/**
 * @author fangchen
 * @date 2022-01-08 14:49
 */
@Component
public class ApplicationUtil implements ApplicationContextAware {

    private static ApplicationContext applicationContext;

    @Override
    public void setApplicationContext(ApplicationContext args) throws BeansException {
        applicationContext = args;
    }

    public static Object getBean(String beanName) {
        return applicationContext.getBean(beanName);
    }
}

4. View target class

package com.zqh.bean;

import org.springframework.stereotype.Component;

/**
 * @author fangchen
 * @date 2022-01-08 14:35
 */
@Component("testBean")
public class TestBean {

    private int a = 9;

    private String str = "this is bboy zqh!";
}

Use Arthas View class variable values

1. start-up Spring Boot Medium main Method

function Application class , Start success log :

 

2. Download and launch arthas

#  download arthas
curl -O https://arthas.aliyun.com/arthas-boot.jar

#  start-up arthas, And find the corresponding process , choice , Here is the first 
java -jar arthas-boot.jar

[INFO] Found existing java process, please choose one and input the serial number of the process, eg : 1. Then hit ENTER.
* [1]: 71175 com.zqh.main.Application
  [2]: 70851 /Users/zhuqiuhui/.flow/resources/player.jar
  [3]: 70850 /Users/zhuqiuhui/.flow/resources/kafka.jar
  [4]: 70852 /Users/zhuqiuhui/.flow/resources/webapp.jar
  [5]: 71174 org.jetbrains.jps.cmdline.Launcher
  [6]: 36375
  [7]: 68267 /Users/zhuqiuhui/.flow/resources/kafka.jar
  [8]: 70861 org.jetbrains.idea.maven.server.RemoteMavenServer
  [9]: 70732

3. Use arthas View class variable values

[[email protected]]$ ognl '@[email protected]("testBean").a'
@Integer[9]

[[email protected]]$ ognl '@[email protected]("testBean").str'
@String[this is bboy zqh!]

Welcome to WeChat official account. : Fang Chen's blog

 

原网站

版权声明
本文为[bboyzqh]所创,转载请带上原文链接,感谢
https://yzsam.com/2022/02/202202130629348270.html