java – JAXB是否使用字节码检测?

前端之家收集整理的这篇文章主要介绍了java – 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参考实现并没有在修改现有类的意义上检测字节码,而是为优化的运行时性能生成新类.

猜你在找的Java相关文章