浏览代码

1.增加加密参数keepArgName:是否保留原始的方法参数名
2.javassist版本升级
3.JavassistUtil代码格式整理

JustryDeng 1 年之前
父节点
当前提交
505ca62215

+ 1 - 1
class-winter-core/src/main/java/winter/com/ideaaedi/classwinter/executor/EncryptExecutor.java

@@ -1001,7 +1001,7 @@ public class EncryptExecutor {
                                         StrUtil.isTrueDefault(params.get(Constant.CLEAN_CLASS_ANNOTATION_PARAM_NAME), false),
                                         StrUtil.isTrueDefault(params.get(Constant.CLEAN_METHOD_ANNOTATION_PARAM_NAME), false),
                                         StrUtil.isTrueDefault(params.get(Constant.CLEAN_FIELD_ANNOTATION_PARAM_NAME), false),
-                                        params.get(Constant.TO_CLEAN_FIELD_ANNOTATION_PREFIX),
+                                        params.get(Constant.TO_CLEAN_ANNOTATION_PREFIX),
                                         StrUtil.isTrueDefault(params.get(Constant.KEEP_ORIGIN_ARGS_NAME), true)
                                 );
                             }

+ 5 - 2
class-winter-core/src/main/java/winter/com/ideaaedi/classwinter/util/Constant.java

@@ -260,13 +260,16 @@ public interface Constant {
      * 参数名:加密的类需要清除的注解全类名前缀(也可以精确匹配),不指定则为默认规则全部注解清除. 分隔符为|符号,例如:com.kk.verify|com.xx.sun
      * <p>
      * {@link EncryptClassArgs#getToCleanAnnotationPrefix()}
+     * <p>
+     * 对类上、字段上、方法上的注解清除都有效
      */
-    String TO_CLEAN_FIELD_ANNOTATION_PREFIX = "caPrefix";
+    String TO_CLEAN_ANNOTATION_PREFIX = "caPrefix";
     
     /**
      * 参数名:是否保留原始的方法参数名. 值应为boolean类型
      * <p>
-     * 为false的话,则加密后方法的参数名将依次被重命名为var0、var1、var2...
+     * 为false的话,则加密后方法的原始参数名信息将被擦除(注:不保证一定成功),
+     * 反编译后查看到的将是形如var0, var1...之类的参数名(注:不同反编译工具的默认参数名可能不一样)
      */
     String KEEP_ORIGIN_ARGS_NAME = "keepArgName";
     

+ 1 - 2
class-winter-core/src/test/java/winter/com/ideaaedi/classwinter/EncryptArgParam_Test.java

@@ -45,9 +45,8 @@ public class EncryptArgParam_Test {
         argMap.put(Constant.CLEAN_METHOD_ANNOTATION_PARAM_NAME, "false");  // 默认为false
         argMap.put(Constant.CLEAN_FIELD_ANNOTATION_PARAM_NAME, "true"); // 默认为false
         // 这里仅作测试实际清除spring boot注解会有问题 ,spring ClassReader读的是本地classfile 所以清除的spring 注解读取不到了
-        argMap.put(Constant.TO_CLEAN_FIELD_ANNOTATION_PREFIX, "org.springframework.context.annotation.Configuration"); // 默认为''
+        argMap.put(Constant.TO_CLEAN_ANNOTATION_PREFIX, "org.springframework.boot.autoconfigure.SpringBootApplication"); // 默认为''
         argMap.put(Constant.KEEP_ORIGIN_ARGS_NAME, "true"); // 默认为true
-
         have(argMap);
     }
     

二进制
class-winter-core/src/test/resources/class-winter-core-2.9.5.jar


二进制
class-winter-core/src/test/resources/class-winter-core-2.9.6.jar