当前位置: 首页 > news >正文

凡科网站免费版网上推

凡科网站免费版,网上推,logo设计大师,网络开发培训获取 Spring 应用上下文 使用工具类 如果你的项目中有一个工具类实现了 ApplicationContextAware 接口,如 cn.shutdown.pf.utils.SpringContextUtils,可以使用该类获取 ApplicationContext: Component public final class SpringContextUt…

获取 Spring 应用上下文

使用工具类

如果你的项目中有一个工具类实现了 ApplicationContextAware 接口,如 cn.shutdown.pf.utils.SpringContextUtils,可以使用该类获取 ApplicationContext

@Component
public final class SpringContextUtils implements ApplicationContextAware {private static ApplicationContext applicationContext;@Overridepublic void setApplicationContext(ApplicationContext applicationContext) throws BeansException {SpringContextUtils.applicationContext = applicationContext;}public static ApplicationContext getApplicationContext() {return applicationContext;}
}

使用 OGNL 获取

在 Arthas 中,使用 ognl 命令结合工具类获取 ApplicationContext

ognl -c <classLoaderHash> '#context=@cn.shutdown.pf.performance.utils.SpringContextUtils@getApplicationContext()'

获取类加载器哈希值

使用 sc 命令

在 Arthas 中,使用 sc 命令可以查看类的详细信息,包括类加载器的哈希值。例如,查看 SpringContextUtils 类的类加载器哈希值:

sc -d cn.shutdown.pf.performance.utils.SpringContextUtils

输出示例:

 class-info        cn.shutdown.pf.performance.utils.SpringContextUtilscode-source       nested:/app/web.jar/!BOOT-INF/classes/!name              cn.shutdown.pf.performance.utils.SpringContextUtils...class-loader      +-org.springframework.boot.loader.launch.LaunchedClassLoader@660591fb+-jdk.internal.loader.ClassLoaders$AppClassLoader@251a69d7+-jdk.internal.loader.ClassLoaders$PlatformClassLoader@89c10b7classLoaderHash   660591fb

在输出中,classLoaderHash 字段显示了类加载器的哈希值,这里是 660591fb

使用 ognl 命令

你也可以使用 ognl 命令直接获取类加载器的哈希值。例如:

ognl '@cn.shutdown.pf.performance.utils.SpringContextUtils@getClass().getClassLoader().hashCode()'

这将返回类加载器的哈希值。

调用 Bean 方法

调用无参数方法

获取到 ApplicationContext 后,可以获取 Bean 并调用其无参数方法:

ognl -c <classLoaderHash> '#context=@cn.shutdown.pf.performance.utils.SpringContextUtils@getApplicationContext(), #bean=#context.getBean("brokerService"), #bean.someMethod()'

调用有参数方法

如果方法有参数,直接在调用时传入参数值:

ognl -c <classLoaderHash> '#context=@cn.shutdown.pf.performance.utils.SpringContextUtils@getApplicationContext(), #bean=#context.getBean("brokerService"), #bean.orderChildPay("CYD2024122923468019")'

调用方法并传入对象参数

当方法需要一个对象作为参数时,需要在 OGNL 表达式中创建该对象并设置其属性:

ognl -c <classLoaderHash> '#context=@cn.shutdown.pf.utils.SpringContextUtils@getApplicationContext(), #param=new com.yourpackage.BrokerOrderChildUpdateMqParam(), #param.setChildNo("DD2024122923468019"), #param.setOrderNo("12345"), #bean=#context.getBean("brokerServiceImpl"), #bean.orderChildPay(#param)'

查看 Spring Bean 名称

使用 vmtool 命令

如果你的 Arthas 支持 vmtool 命令,可以使用以下命令查看所有注册的 Bean 名称:

vmtool --action getInstances --className org.springframework.context.ApplicationContext --express 'instances[0].getBeanDefinitionNames()'

使用 ognl 命令

如果不支持 vmtool 命令,可以使用 ognl 命令结合 ApplicationContext 获取 Bean 名称:

ognl -c <classLoaderHash> '#context=@cn.shutdown.pf.utils.SpringContextUtils@getApplicationContext(), #context.getBeanDefinitionNames()'

常见问题及解决方法

ClassNotFoundException

  • 确保类路径正确,类已编译并打包到应用中。
  • 使用 sc 命令检查类加载器信息,确保使用正确的类加载器。

NoSuchBeanDefinitionException

  • 确认 Bean 名称正确,检查类上的注解(如 @Component@Service)。
  • 确保 Spring 组件扫描路径包含了 Bean 类所在的包路径。
  • 使用 Arthas 的 bean 命令(如果支持)或 ognl 命令列出所有 Bean 名称,确认 Bean 是否存在。

方法调用返回 null

  • 方法逻辑导致返回 null,检查方法内部逻辑和业务条件。
  • 方法业务逻辑设计为返回 null,需要根据业务需求处理返回值。

注意事项

  • 确保 Arthas 版本与操作系统和应用架构兼容。
  • 使用正确的类加载器哈希值,可以通过 sc 命令获取。
  • 调用方法时,确保方法签名与传入的参数类型和数量匹配。
  • 在生产环境中使用 Arthas 时,注意安全和性能影响,谨慎操作。
http://www.hkea.cn/news/969544/

相关文章:

  • 威海高区建设局网站长春做网络优化的公司
  • 安平做网站百度一下首页百度一下知道
  • 苏州建设网站市政中标项目如何做推广引流赚钱
  • 17网站一起做网店怎么下单来宾网站seo
  • 建设商务网站的目的天津seo网站排名优化公司
  • 阿里巴巴网站导航栏怎么做口碑营销策划方案
  • 线上做交互的网站百度app下载
  • 做暖暖欧美网站挖掘爱站网
  • 网站 风格百度推广公司
  • 林州网站建设公司站长工具关键词排名怎么查
  • 想给公司做个网站微信seo是什么意思
  • 网站做管制户外刀具营销推广方案模板
  • 淘宝客网站免费做seo网站关键词优化机构
  • 企业做网站建设的好处seo网站关键词优化
  • 一般网站用什么做的最新新闻国内大事件
  • 做线上网站需要钱吗互联网营销推广
  • 找个美工做淘宝网站需要多少钱南昌seo方案
  • 网站用户登录流程图外贸高端网站设计公司
  • 做搜狗手机网站优化软代写
  • wordpress页面背景颜色win7优化设置
  • 做分类信息网站代码百度搜索推广优化师工作内容
  • 南京网站开发公司关键词推广
  • 合水口网站建设百度指数明星人气榜
  • 上传网站图片处理推广软件免费
  • 做网站怎么写代码下载百度软件
  • 县城做网站网站搭建关键词排名
  • b2b多平台一键发布seo需要掌握哪些技术
  • 网站建设推广合同网络广告联盟
  • 汽车网站正在建设中模板什么是营销模式
  • 宜昌seo百度seo优化