Arthas之定义工具类获取Bean

java代码

@Component
public class SpringBeanUtils<T> implements ApplicationContextAware {

    private static ApplicationContext applicationContext;

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

    public static <T> T  getBean(Class<T> clazz) {
        return applicationContext != null?applicationContext.getBean(clazz):null;
    }

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

}

arthas使用如下

getStatic SpringBeanUtils applicationContext

$ ognl '#context=@com.alibaba.dubbo.config.spring.extension.SpringExtensionFactory@contexts.iterator.next, #context.getBean("userServiceImpl").findUser(1)'
@User[
    id=@Integer[1],
    name=@String[Deanna Borer],
]

Arthas之调用SpringBoot获取Bean | wangdaye's blog