Java Beans Introspector 需要桌面模块
Java Beans Introspector requires desktop module
我正在研究使用 Jigsaw 来减少微服务的足迹。我必须找到的最后一个依赖项是 java.beans.Introspector.
想象一下当我发现我需要引入整个模块 java.desktop 时我的惊讶,其中包含各种不相关的东西,如 awt、applet、swing 等。
这对我来说似乎很疯狂,bean 内省肯定应该是基本语言的一部分,并且与 UI 功能无关。我认为依赖来自 Spring Boot 的嵌入式 Tomcat,所以我不能自己修改它。
问题:模块是您可以访问的最精细的粒度,还是有另一种方法来 trim 脂肪。
依赖关系存在,因为 BeanInfo
和 SimpleBeanInfo
从 AWT 包中引用了 Icon
和 Image
。此外,PropertyEditor
声明方法 getCustomEditor
和 paintValue
创建对 类 Component
、Graphics
和 Rectangle
的依赖关系。还有一些 类 在 API 中不可见,它们引用了桌面 类,即为这些桌面 类 提供的默认 属性 编辑器和持久性委托实现.
由于 Java 模块不允许包分布在多个模块中,因此无法将功能拆分为 AWT 依赖模块和非依赖模块(以向后兼容的方式)。动态加载的工件,即实际的 bean 信息、编辑器和持久性委托,可以移到另一个模块中,但不能移到 BeanInfo
和 PropertyEditor
接口及其 SimpleBeanInfo
和 PropertyEditorSupport
实施。
没有更好的粒度,也没有解决方案可以在不创建该依赖项的情况下使用 bean 类。 JDK 开发人员如何处理由该决定引起的问题可以很好地说明这一点。由于 java.util.logging.LogManager
和 java.util.jar.Pack200.Packer
/Unpacker
支持 java.beans.PropertyChangeListener
,这导致对 java.desktop
的依赖,如果保持这种方式,这些方法是有史以来第一个方法从标准 Java API 中删除,速度与首次在 Java 8 中弃用并已在 Java 9 中删除一样快。
我认为,如果有一种方法可以像 PropertyChangeListener
那样声明对基本 bean 类 的依赖,而不会对 java.desktop
产生不必要的依赖,那么 JDK开发人员没有开创先例。
我正在研究使用 Jigsaw 来减少微服务的足迹。我必须找到的最后一个依赖项是 java.beans.Introspector.
想象一下当我发现我需要引入整个模块 java.desktop 时我的惊讶,其中包含各种不相关的东西,如 awt、applet、swing 等。
这对我来说似乎很疯狂,bean 内省肯定应该是基本语言的一部分,并且与 UI 功能无关。我认为依赖来自 Spring Boot 的嵌入式 Tomcat,所以我不能自己修改它。
问题:模块是您可以访问的最精细的粒度,还是有另一种方法来 trim 脂肪。
依赖关系存在,因为 BeanInfo
和 SimpleBeanInfo
从 AWT 包中引用了 Icon
和 Image
。此外,PropertyEditor
声明方法 getCustomEditor
和 paintValue
创建对 类 Component
、Graphics
和 Rectangle
的依赖关系。还有一些 类 在 API 中不可见,它们引用了桌面 类,即为这些桌面 类 提供的默认 属性 编辑器和持久性委托实现.
由于 Java 模块不允许包分布在多个模块中,因此无法将功能拆分为 AWT 依赖模块和非依赖模块(以向后兼容的方式)。动态加载的工件,即实际的 bean 信息、编辑器和持久性委托,可以移到另一个模块中,但不能移到 BeanInfo
和 PropertyEditor
接口及其 SimpleBeanInfo
和 PropertyEditorSupport
实施。
没有更好的粒度,也没有解决方案可以在不创建该依赖项的情况下使用 bean 类。 JDK 开发人员如何处理由该决定引起的问题可以很好地说明这一点。由于 java.util.logging.LogManager
和 java.util.jar.Pack200.Packer
/Unpacker
支持 java.beans.PropertyChangeListener
,这导致对 java.desktop
的依赖,如果保持这种方式,这些方法是有史以来第一个方法从标准 Java API 中删除,速度与首次在 Java 8 中弃用并已在 Java 9 中删除一样快。
我认为,如果有一种方法可以像 PropertyChangeListener
那样声明对基本 bean 类 的依赖,而不会对 java.desktop
产生不必要的依赖,那么 JDK开发人员没有开创先例。