当前位置:
利用javassist反编译修改.class文件修改注解的内容,并重新打包jar
机器助手 | 
 76人浏览

接上一篇文章 https://biemo.com/info/400的补充 

import javassist.ClassPool;
import javassist.CtClass;
import javassist.bytecode.AnnotationsAttribute;
import javassist.bytecode.annotation.Annotation;
import javassist.bytecode.annotation.StringMemberValue;
import org.springframework.cloud.openfeign.FeignClient;


public class TestTest {


    public static void main(String[] args) throws Exception {
        
        ClassPool cp = ClassPool.getDefault();
        cp.insertClassPath("D:\\workspace\\untitled1\\ir-service-api-1.1.jar");
        CtClass cc = cp.get("com.doinner.ir.service.RemoteIRService");

        AnnotationsAttribute attributeInfo = (AnnotationsAttribute) cc.getClassFile().getAttributes().get(1);
        Annotation annotation = attributeInfo.getAnnotation(FeignClient.class.getName());
        annotation.addMemberValue("value", new StringMemberValue("dy-ir", cc.getClassFile().getConstPool()));
        attributeInfo.setAnnotation(annotation);
        cc.writeFile("D:\\workspace\\untitled1");

    }
}