Java maven项目与spring框架的混淆

问题描述 投票:0回答:1

混淆完成后,我面临org.springframework.beans.factory.NoSuchBeanDefinitionException

有没有办法避免更改bean名称,我尝试过像-keep这样的规则来保留整个类或-dontobfuscate,不管它总是会导致上述异常。

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

混淆后,SpringContext 中缺少许多 bean,因此会引发错误。

我浏览了有关我面临的问题的其他问题,但从未找到答案

是否有一条规则专门避免更改bean名称,或者混淆spring项目是一个坏主意,或者是否有其他混淆spring项目的方法。

我尝试过使用@ComponentScan并指定了一个名称,但它没有解决问题,我已经使用了@Named并指定了一个名称。

java spring maven obfuscation
1个回答
0
投票

您可以在

@Bean
@Component
注释中显式设置 bean 名称,以便可以在不更改 bean 名称的情况下更改/混淆方法/类名称。

例如

@Configuration 
public class MyConfiguration {
   @Bean("bean1")
   public Bean1 bean1() {
      return new Bean1();
   }

   @Bean(name="bean2", initMethod="init")
   public Bean2 bean2(Bean1 bean1) {
      return new Bean2(bean1);
   }
}
@Component("myComponent")
public class MyComponent {
   ...
}
© www.soinside.com 2019 - 2024. All rights reserved.