在开发过程经常有同学问:“我这个配置更新提交了,怎么样知道项目中是否已经更新使用新值?” 常用的方法是添加日志打印该值判断是否更新。今天我们用Arthas来实现项目中配置值实时读取。

Arthas 简介

Arthas 是Alibaba开源的Java诊断工具。使用 Arthas 可以很方便帮助我们排查线上问题。下面简单介绍几个常用的命令以及使用的场景。

  • jad 命令反编译指定已加载类的源码。在代码修改了不生效,怀疑代码没有部署时可以通过该命令查看源码。
  • thread 命令查看当前线程信息,线程的堆栈。线程池线程爆满时用该命令查看阻塞线程;CPU使用率过高用该命令查看占用CPU最高的线程。
  • jvm 命令查看当前JVM信息。查看使用什么垃圾回收算法、线程数和阻塞线程数等。
  • watch 命令方法执行数据观测。观察方法入参和返回值,或者报错信息等。
  • trace 命令方法内部调用路径,并输出方法路径上的每个节点上耗时。查看方法内部调用所有的接口和每个接口对应的耗时,这个可以很好的掌控接口性能质量。
  • tt 命令记录下指定方法每次调用的入参和返回信息,并能对这些不同的时间下调用进行观测。需要重现某个问题时,需要前端同学配合点击,用这个命令可以代替前端同学,回放之前的请求。
  • getstatic 命令可以查看类的静态属性。
  • ognl 命令可以查看类的静态属性,并且可以做很多不可以描述的事情!

上面的命令是作为开发经常使用到的,具体怎么样使用Arthas请看官网。

OGNL窃取SpringContext属性

假设大家都知道 SpringBoot 读取配置之后存在 ConfigurableApplicationContext 的 environment 中。如果有不知道的,可以在 PropertySourceBootstrapConfiguration#initialize 方法里打个断点debug调试一波

Arthas查看Spring配置的更多相关文章

  1. 解决eclipse spring配置报错:cvc-elt.1: Cannot find the declaration of element

    解决eclipse spring配置报错:cvc-elt.1: Cannot find the declaration of element 'beans'.Referenced file conta ...

  2. [SSH 3]以网上商城项目浅谈spring配置

    导读:在做ITOO项目的时候,就用到了容器+反射,从而运用了依赖注入和依赖查找.如果看过WCF端的配置文件,那么对于这个spring的配置就很容易理解.本篇博客,是对于自己做的一个小项目中所运用到的s ...

  3. spring配置mq入门案例

    第一步:添加maven配置 <!-- mq --> <dependency> <groupId>org.springframework</groupId> ...

  4. spring配置加载2次实例问题。

    WEB.XML 中SPRING 配置及重复加载问题 Posted on 2012-11-13, 15:48, by tmser, under java 周边 . 项目内存溢出,mat 查看了一下发现s ...

  5. idea的spring配置

    开始使用idea,开始的时候把相关的插件都禁用了,导致在建项目和configuration的时候不出现spring相关字样 到plugins中找到installed的插件,查看spring boot ...

  6. Spring配置c3p0数据源时出错报:java.lang.NoClassDefFoundError: com/mchange/v2/ser/Indirector

    今天在使用Spring配置c3p0数据源时,使用的数据库是mysql,服务器是tomcat,运行时报了一个 java.lang.NoClassDefFoundError: com/mchange/v2 ...

  7. Spring配置汇总

    现在主流的JavaWeb应用几乎都会用到Spring,以下是Spring的配置,以及结合Web的SpringMVC配置的汇总. jar包的引入 与Web项目集成 Spring配置文件 SpringMV ...

  8. spring配置属性的两种方式

    spring配置属性有两种方式,第一种方式通过context命名空间中的property-placeholder标签 <context:property-placeholder location ...

  9. spring配置详解

    1.前言 公司老项目的后台,均是基于spring框架搭建,其中还用到了log4j.jar等开源架包.在新项目中,则是spring和hibernate框架均有使用,利用了hibernate框架,来实现持 ...

随机推荐

  1. bbs-admin

    目录 引入单例----单例补充 admin---url/注册的自定义配置 解析admin源码 django-admin注册账号-----创建超级用户 python manage.py createsu ...

  2. HMM 隐马尔科夫 Python 代码

    import numpy as np # -*- codeing:utf-8 -*- __author__ = 'youfei' # 隐状态 hidden_state = ['sunny', 'rai ...

  3. windows 安装python2.7

    下载:https://www.python.org/downloads/release/python-2716/ 安装即可. 设置环境变量 进入C:\Python27,修改python.exe 为py ...

  4. JVM GC之垃圾收集算法

    1.垃圾收集概念 GC目的 分配内存,为每个新建的对象分配空间 确保还在使用的对象的内存一直还在,不能把有用的空间当垃圾回收了 释放不再使用的对象所占用的空间 我们把还被引用的对象称为活的,把不再被引 ...

  5. 在docker 安装gitlab

    一.Centos 7 上安装 官方文档:https://docs.docker.com/install/linux/docker-ce/centos/ 1.安装环境      yum install  ...

  6. 复杂sql语句集锦

    本文主要讲一下笔者在工作中遇到的一些逻辑比较复杂的sql语句,下面是具体写法: SELECT IF ( LOCATE() , NULL, SUBSTRING( link, LOCATE() , IF ...

  7. MybatisUtil工具类的作用

    1)在静态初始化块中加载mybatis配置文件和StudentMapper.xml文件一次 2)使用ThreadLocal对象让当前线程与SqlSession对象绑定在一起 3)获取当前线程中的Sql ...

  8. DML语句

    DML 操作是指对数据库中表记录的操作,主要包括表记录的插入(insert).更新(update).删除(delete)和查询(select),是开发人员日常使用最频繁的操作. 插入记录 表创建好后, ...

  9. CentOS7.5安装python3并设置成系统默认python环境

    1.环境说明 系统版本:CentOS7. 安装的python版本: 2.编译环境准备(如果出现文件解压错误,wget命令无法下载等各种小意外,先把下面的环境安装一遍) yum install zlib ...

  10. 从源码学习使用 node-delegates

    node-delegates 是 TJ 大神所写的一个简单的小工具,源码只有 157 行,作用在于将外部对象接受到的操作委托到内部属性进行处理,也可以理解为讲对象的内部属性暴露到外部,简化我们所需要书 ...