You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Maven项目混淆后遇NoSuchBeanDefinitionException的解决方案咨询

Spring Maven项目代码混淆后出现NoSuchBeanDefinitionException的问题

对基于Spring框架的Java Maven项目做代码混淆后,触发org.springframework.beans.factory.NoSuchBeanDefinitionException异常。项目中通过以下代码按名称获取Bean:

private Object getService(String serviceName) {
    return getInstance().getSpringContext().getAutowireCapableBeanFactory()
            .getBean(serviceName);
}

混淆后SpringContext中缺失大量Bean,导致按名称获取Bean时报错。

已尝试的解决方案

  • 使用ProGuard的-keep、-dontobfuscate规则尝试保留完整类,未解决问题
  • 尝试通过@ComponentScan指定扫描名称、给Bean类添加@Named/@Service显式指定Bean名称(例如给InterfaceMasterService标注@Service("InterfaceMasterService")),混淆后反编译显示注解名称未被修改,但异常依旧触发

相关Bean类代码:

混淆前

//@Named("InterfaceMasterService")
//@Component("InterfaceMasterService")
@Service("InterfaceMasterService")
@Transactional("Transactional")
public class InterfaceMasterService {

混淆后反编译代码

@Service("InterfaceMasterService")
@Transactional("Transactional")
public class InterfaceMasterService {

咨询问题

  • 是否存在专门避免修改Bean名称的混淆规则?
  • 混淆Spring项目是否并非合理选择?
  • 有没有其他适用于Spring项目的混淆方法?

内容的提问来源于stack exchange,提问作者Mohammed Kamran

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 18:52:09