首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何管理Spring Getters和Setters在yguard中的混淆

如何管理Spring Getters和Setters在yguard中的混淆
EN

Stack Overflow用户
提问于 2012-03-13 11:55:53
回答 1查看 2.5K关注 0票数 3

嗨,我使用y卫兵ant任务混淆我的项目,它很适合重命名我的java类,并在spring文件中重新命名相应的bean,但是由于getter和setter方法在java中也被重命名,所以spring注入中的属性名不匹配。所以我无法继续。有谁能告诉我如何将setter和getter单独排除在混淆之外?

EN

回答 1

Stack Overflow用户

发布于 2012-07-04 10:30:48

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

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

处理bean类

如果您的应用程序、applet、servlet、库等广泛使用了对bean类的内省来查找bean编辑器类或getter和setter方法,那么配置可能会变得痛苦。除了确保bean类名或getter和setter名称不发生更改之外,您还能做什么。例如:

代码语言:javascript
复制
-keep public class mypackage.MyBean {
    public void setMyProperty(int);
    public int getMyProperty();
}

-keep public class mypackage.MyBeanEditor

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

代码语言:javascript
复制
-keep class mybeans.** {
    void set*(***);
    void set*(int, ***);

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

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

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

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

处理资源注入

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

代码语言:javascript
复制
-keepclassmembers class * {
    @javax.annotation.Resource *;
}

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

代码语言:javascript
复制
-keepclassmembers class * {
    @org.springframework.beans.factory.annotation.Autowired *;
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9683521

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档