簡體   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