gpt4 book ai didi

java - 在处理 spring proguard 时遇到困难

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:15:08 26 4
gpt4 key购买 nike

我有一个使用 spring 注释 extensivley 的 Web 应用程序,我的混淆器配置如下:

-printmapping out.map

-dontoptimize

-keepdirectories

-renamesourcefileattribute SourceFile

-keepattributes Exceptions,SourceFile,LineNumberTable,*Annotation*

-adaptresourcefilenames **.xsd,**.wsdl,**.xml,**.properties,**.gif,**.jpg,**.png
-adaptresourcefilecontents **.xsd,**.wsdl,**.xml,**.properties,META-INF/MANIFEST.MF

-dontshrink

-keepclassmembernames class * {
java.lang.Class class$(java.lang.String);
java.lang.Class class$(java.lang.String, boolean);
}

-keepclassmembers enum * {
public static **[] values();
public static ** valueOf(java.lang.String);
}

-keepclassmembers class * implements java.io.Serializable {
static final long serialVersionUID;
private static final java.io.ObjectStreamField[] serialPersistentFields;
private void writeObject(java.io.ObjectOutputStream);
private void readObject(java.io.ObjectInputStream);
java.lang.Object writeReplace();
java.lang.Object readResolve();
}

-keep @org.springframework.transaction.annotation.Transactional class *

-keep @org.springframework.stereotype.Service class *

-keep @org.springframework.stereotype.Controller class *

-keep @org.springframework.beans.factory.annotation.Autowired class *

-keep @org.springframework.web.bind.annotation.ResponseBody class *

-keep @org.springframework.web.bind.annotation.RequestMapping class *

-keep @org.springframework.stereotype.Repository class *

-keep @javax.annotation.Resource class *

-keep @javax.persistence.Entity class *

-keep @javax.persistence.Table class *

-keep @javax.persistence.Id class *

-keep @javax.persistence.GeneratedValue class *

-keep @javax.persistence.Column class *

-keep @javax.persistence.Transient class *

-keep @org.springframework.ws.server.endpoint.annotation.Endpoint class *

-keep @org.springframework.ws.server.endpoint.annotation.PayloadRoot class *

-keep @org.springframework.ws.server.endpoint.annotation.ResponsePayload class *

它构建良好,没有任何警告。但是在tomcat中部署后,在浏览器中打开页面,等待和等待没有任何结果,可能是什么问题?

最佳答案

我发现了问题:
proguard 无法在运行时类型时对带注释的类、方法、字段进行特殊处理。如果你运行 proguard,即使使用 -keep 注释选项,它仍然会弄乱配置文件,因为它只能替换资源中对包有完整引用的类、方法、字段当且仅当类/字段以下列方式提及时:my.package.level.purpose.MyClass/my.package.level.purpose.MyClass.myField.
回到注解,spring web 应用程序充满了注解,因此它是无用的,甚至根本不会被混淆(也许只有 util 类会被混淆)。
结论:
没有使用任何混淆器甚至商业混淆器混淆现代 spring (3.x.x+) Web 应用程序,因为它们都在代码的字节码端工作,不会处理注释和弄乱配置文件.

关于java - 在处理 spring proguard 时遇到困难,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8970505/

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