混淆完成后,我面临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并指定了一个名称。
您可以在
@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 {
...
}