嗨,我使用y卫兵ant任务混淆我的项目,它很适合重命名我的java类,并在spring文件中重新命名相应的bean,但是由于getter和setter方法在java中也被重命名,所以spring注入中的属性名不匹配。所以我无法继续。有谁能告诉我如何将setter和getter单独排除在混淆之外?
发布于 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名称不发生更改之外,您还能做什么。例如:
-keep public class mypackage.MyBean {
public void setMyProperty(int);
public int getMyProperty();
}
-keep public class mypackage.MyBeanEditor如果有太多元素要显式列出,类名和方法签名中的通配符可能会有所帮助。此示例应该包含包mybean中类中的所有可能的setter和getter:
-keep class mybeans.** {
void set*(***);
void set*(int, ***);
boolean is*();
boolean is*(int);
*** get*();
*** get*(int);
}“*”通配符匹配任何类型(原始或非原始、数组或非数组)。带有'int‘参数的方法与作为列表的属性相匹配。
如果您还在应用程序中使用注释:
处理资源注入
如果应用程序使用的是Java样式的资源注入,则应用程序容器将自动将资源类的实例分配给带有@Resource注释的字段和方法。容器应用内省,甚至直接访问私有类成员。它通常根据类型名称和类成员名构造资源名称。然后,我们必须避免这样的类成员被删除或重命名:
-keepclassmembers class * {
@javax.annotation.Resource *;
}Spring框架还有另一个类似的注解@Autowired:
-keepclassmembers class * {
@org.springframework.beans.factory.annotation.Autowired *;
}https://stackoverflow.com/questions/9683521
复制相似问题