繁体   English   中英

Java Bean Introspector需要桌面模块

[英]Java Beans Introspector requires desktop module

我正在研究使用Jigsaw来减少微服务的占用空间。 我必须找到的最后一个依赖项是java.beans.Introspector。

想象一下,当我发现需要引入整个模块java.desktop时,我感到惊讶,该模块包含各种不相关的东西,例如awt,applet,swing等。

在我看来,这很疯狂,可以肯定的是,bean的自省应该是基本语言的一部分,并且与UI功能无关。 我认为依赖项来自Spring Boot的嵌入式Tomcat,因此我无法自行修改。

问题:模块是您可以访问的最细粒度,还是有另一种方式来减少脂肪。

之所以存在依赖关系,是因为BeanInfoSimpleBeanInfo引用了AWT包中的IconImage 此外, PropertyEditor声明的方法getCustomEditorpaintValue​创建依赖的类ComponentGraphicsRectangle API中还有一些不可见的类,其中包含对桌面类的引用,即为这些桌面类提供的默认属性编辑器和持久性委托实现。

由于Java模块不允许程序包跨多个模块散布,因此无法将功能拆分为AWT依赖模块和非依赖模块(以向后兼容的方式)。 动态加载的工件(即实际的bean信息,编辑器和持久性委托)可以移到另一个模块中,但不能移到BeanInfoPropertyEditor接口及其SimpleBeanInfoPropertyEditorSupport实现中。

没有更好的粒度,没有在不创建依赖项的情况下使用Bean类的解决方案。 JDK开发人员如何处理此决定引起的问题可以很好地说明这一点。 由于java.util.logging.LogManagerjava.util.jar.Pack200.Packer / Unpacker支持java.beans.PropertyChangeListener ,这导致对java.desktop的依赖,如果保持这种方式,则这些方法是有史以来的第一个方法从标准Ja​​va API中删除,速度与Java 8中首次弃用并已在Java 9中删除一样快。

我认为,如果有一种方法可以声明对像PropertyChangeListener类的基本bean类的依赖关系, java.desktop创建不必要的依赖关系,那么JDK开发人员就不会设置该先例。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM