Eclipse偏好域中Default scope与BundleDefaultsScope的区别及设计意图
Eclipse中BundleDefaultsScope与DefaultScope的区别及设计目的
核心区别
归属层级与作用范围
DefaultScope是Eclipse偏好系统的全局基础层级,存储跨插件的通用默认配置,所有插件均可访问,属于平台级默认值。BundleDefaultsScope是插件专属层级,仅存储当前插件(或依赖它的插件)的默认配置,属于插件私有,不会干扰全局偏好空间。
生命周期绑定
DefaultScope的默认值随Eclipse平台启动加载,不会随单个插件的卸载、更新而消失,是稳定的全局基础配置。BundleDefaultsScope的默认值与插件生命周期强绑定:插件安装时加载,卸载时对应配置会被清理,完全跟随插件的生命周期。
访问与使用场景
DefaultScope直接通过IEclipsePreferences操作节点,偏向底层OSGi偏好服务,适合定义平台核心、全局通用的默认规则。BundleDefaultsScope通常通过插件的IPreferenceStore(比如AbstractUIPlugin.getPreferenceStore())访问,是Eclipse UI插件提供的封装层,适合插件自身功能相关的UI偏好设置。
设计目的解析
结合你给出的代码示例来看:
- AntUI插件使用BundleDefaultsScope:AntUI是独立功能插件,它的偏好(比如默认构建文件名
build.xml)属于自身功能的一部分。用BundleDefaultsScope可以让插件的默认配置和插件本身绑定,方便插件独立部署、更新或卸载,不会污染全局偏好,也避免了插件卸载后残留无效配置。 - IDE核心插件使用DefaultScope:IDEWorkbench是Eclipse平台的核心框架,它的偏好是整个平台的基础配置(比如工作台通用行为、资源管理规则),这些配置需要全局共享且稳定,不能依赖单个插件的存在。用
DefaultScope可以保证这些基础默认值的全局性和稳定性,作为所有插件的基础配置参考。
内容的提问来源于stack exchange,提问作者Bourbon_7
相关产品推荐
相关产品推荐

