相关文章推荐
暗恋学妹的鸵鸟  ·  MySQL 8.0 ...·  3 周前    · 
暗恋学妹的鸵鸟  ·  javascript - ...·  5 月前    · 
暗恋学妹的鸵鸟  ·  Debezium MongoDB ...·  9 月前    · 
暗恋学妹的鸵鸟  ·  java.lang.IndexOutOfBo ...·  9 月前    · 
暗恋学妹的鸵鸟  ·  git tag ...·  10 月前    · 
威武的香瓜  ·  [转]Entity Framework ...·  5 小时前    · 
@GetMapping("/test1") public Result test1(@RequestParam String key) { log.info("test1111111111111#{}", key); List list = (List) CollectionUtils.arrayToList(new String[]{"aaa", "bbb", "ccc"}); return Result.builder().msg("请求成功#" + maxConn).data(list).build();

获取 Spring Context

SpringMVC 方式

监听 Web 请求,有接口请求进入服务会被记录进 Time Tunnel

tt -t org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter invokeHandlerMethod -n 1

获取 Spring Context 对象。

tt -i 1000 -w 'target.getApplicationContext()'

获取 @Value 方式赋值的值( private 修饰的也可获取)。

tt -i 1000 -w 'target.getApplicationContext().getBean("test111Controller").maxConn'

修改 @Value 赋值的 maxConn 200 (原始设置的为 100 )。

tt -i 1000 -w 'target.getApplicationContext().getBean("test111Controller").maxConn=200'

获取配置类方式配置的字段。

tt -i 1000 -w 'target.getApplicationContext().getBean("testConfig").isTest'

修改 isTest false

tt -i 1000 -w 'target.getApplicationContext().getBean("testConfig").isTest=false'

ognl 方式一

对于 Spring Boot 项目还可以在入口类中 SpringApplication.run 接收 ApplicationContext ,注意用静态变量接收。

@SpringBootApplication
public class ArthasApplication {
    private static ConfigurableApplicationContext cac;
    public static void main(String[] args) {
        cac = SpringApplication.run(ArthasApplication.class, args);

获取Spring Context对象。

ognl '@com.example.arthas.ArthasApplication@cac'

获取Spring Context管理的Bean类。

ognl '@com.example.arthas.ArthasApplication@cac.getBean("testConfig")'

修改配置类中的属性。

ognl '@com.example.arthas.ArthasApplication@cac.getBean("testConfig").url="http://www.google.com"'

ognl 方式二

需自定义一个获取Spring Context对象。

package com.example.arthas.util;
@Component
public class SpringContextUtil implements ApplicationContextAware {
    // Arthas ognl获取applicationContext
    // ognl '@com.example.arthas.util.SpringContextUtil@applicationContext'
    public static ApplicationContext applicationContext = null;
    @Override
    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
        if (SpringContextUtil.applicationContext == null) {
            SpringContextUtil.applicationContext = applicationContext;

获取Spring Context对象。

ognl '@com.example.arthas.util.SpringContextUtil@applicationContext'

获取Spring Context管理的Bean类。

ognl '@com.example.arthas.util.SpringContextUtil@applicationContext.getBean("testConfig")'

修改配置类中的属性。

ognl '@com.example.arthas.util.SpringUtils@applicationContext.getBean("testConfig").url="http://www.google.com"'

即使Arthas停止后(stop),修改过的字段还是生效。

https://github.com/alibaba/arthas/issues/482

阅读 4961 · 发布于 2021-05-02

————&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbspEND&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp————

Give me a Star, Thanks:)

https://github.com/fendoudebb

扫描下方二维码关注公众号和小程序↓↓↓

 
推荐文章