gpt4 book ai didi

obfuscation - 如何在 yguard 中管理 Spring Getters 和 Setters 混淆

转载 作者:行者123 更新时间:2023-12-02 00:24:03 24 4
gpt4 key购买 nike

您好,我使用 yguard ant 任务来混淆我的项目,重命名我的 java 类和 spring xml 文件中的相应 bean 很顺利,但是由于 getter 和 setter 方法也在 java 中重命名,因此 spring 注入(inject)中的属性名称不匹配.. 所以我无法继续。谁能告诉我如何单独排除 setter 和 getter 进行混淆?

最佳答案

YGuard在这方面不是很好,但你为什么不试试ProGaurd呢?

您可以引用 ProGaurd 示例部分(http://proguard.sourceforge.net/index.html#manual/examples.html),其中说:

处理 bean 类

如果您的应用程序、applet、servlet、库等广泛使用 bean 类的内省(introspection)来查找 bean 编辑器类或 getter 和 setter 方法,那么配置可能会变得很痛苦。除了确保 bean 类名称或 getter 和 setter 名称不变之外,您无能为力。例如:

-keep public class mypackage.MyBean {
public void setMyProperty(int);
public int getMyProperty();
}

-keep public class mypackage.MyBeanEditor

如果要显式列出的元素太多,类名和方法签名中的通配符可能会有所帮助。此示例应包含包 mybeans 中的类中所有可能的 setter 和 getter:

-keep class mybeans.** {
void set*(***);
void set*(int, ***);

boolean is*();
boolean is*(int);

*** get*();
*** get*(int);
}

“***”通配符匹配任何类型(原始或非原始、数组或非数组)。带有“int”参数的方法匹配列表属性。

如果您还在应用程序中使用注解:

处理资源注入(inject)

如果您的应用程序使用 Java EE 样式的资源注入(inject),应用程序容器会自动将资源类的实例分配给使用 @Resource 注释的字段和方法。容器应用内省(introspection),甚至直接访问私有(private)类成员。它通常根据类型名称和类成员名称构造资源名称。然后我们必须避免此类类成员被删除或重命名:

-keepclassmembers class * {
@javax.annotation.Resource *;
}

Spring框架还有一个类似的注解@Autowired:

-keepclassmembers class * {
@org.springframework.beans.factory.annotation.Autowired *;
}

关于obfuscation - 如何在 yguard 中管理 Spring Getters 和 Setters 混淆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9683521/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com