java – JAXB是否使用字节码检测?
发布时间:2020-12-14 05:04:34 所属栏目:Java 来源:网络整理
导读:我工作的人注意到(在堆栈跟踪中)当使用- javaagent:spring-instrumentation.jar运行jvm时,我的JAXB注释类中有一些我们没有编写的奇怪的新方法:例如SomeJaxbAnnotatedClass $JaxbAccessorM_getFields_setFields_java_util_Set.get 这是否意味着jaxb在可用时
我工作的人注意到(在堆栈跟踪中)当使用-
javaagent:spring-instrumentation.jar运行jvm时,我的JAXB注释类中有一些我们没有编写的奇怪的新方法:例如SomeJaxbAnnotatedClass $JaxbAccessorM_getFields_setFields_java_util_Set.get
这是否意味着jaxb在可用时使用字节码检测?我在哪里可以阅读有关此功能的更多信息 谢谢, 解决方法
只是skaffman的帖子的补充:
你看到的(SomeJaxbAnnotatedClass $JaxbAccessor …)是一个内部类,它由JAXB参考实现动态生成.为了防止运行时的反射开销,生成类com.sun.xml.bind.v2.runtime.reflect.Accessor的具体实现的字节码,并通过调用ClassLoader.defineClass(String,byte [],将其注入到当前类加载器中,int,int),在使用反射来绕过defineClass方法的受保护访问修饰符之后. 因此,JAXB参考实现并没有在修改现有类的意义上检测字节码,而是为优化的运行时性能生成新类. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |