Sim*_*san 6 java java-platform-module-system java-9 java-module
我正在调查使用Jigsaw来减少微服务的占用空间.我必须找到的最后一个依赖项是java.beans.Introspector.
想象一下,当我发现我需要引入整个模块java.desktop时,我会感到惊讶,它包含各种不相关的东西,比如awt,applets,swing等.
这对我来说似乎很疯狂,当然bean内省应该是基本语言的一部分,与UI功能无关.我认为依赖来自Spring Boot的嵌入式Tomcat,所以我不能自己修改它.
问题:模块是您可以访问的最精细的粒度还是有另一种方法来修剪脂肪.
依赖存在,因为BeanInfo并且SimpleBeanInfo具有AWT包的引用Icon和Image来自AWT包的引用.此外,API中有一些类不可见,它们引用了桌面类,即为这些桌面类提供的默认属性编辑器和持久性委托实现.
由于Java模块不允许将包分布在多个模块上,因此无法将功能拆分为AWT相关模块和非相关模块(以向后兼容的方式).动态加载的工件,即实际的bean信息,编辑器和持久性委托,可能已被移动到另一个模块,但不是PropertyEditor接口及其getCustomEditor实现.
在没有创建依赖关系的情况下,没有更精细的粒度和使用bean类的解决方案.JDK开发人员如何处理由此决定引起的问题,可以很好地说明这一点.由于paintValue?和Component/或Graphics支持Rectangle导致依赖BeanInfo,如果保持这种方式,这些方法是从标准Java API中删除的第一个方法,尽可能快地在Java 8中首次被弃用并且已经在Java 9中删除了.
我认为,如果有一种方法可以声明对基本bean类的依赖,比如PropertyEditor没有创建不需要的依赖项SimpleBeanInfo,那么JDK开发人员就没有设置这个先例.
| 归档时间: |
|
| 查看次数: |
417 次 |
| 最近记录: |