Identify component factories by identifier string
- 主要语言
- Scala
- 星标
- 47
- 派生
- 14
- PR 合并指标
- 30 天内没有已合并 PR
描述
**Description**
Currently, component factories are loaded in `ClassLoaderUtils` given their fully qualified classnames. The classname is passed by the configuration. (e.g. `component.writer`)
That means that components don't have the possibility to be refactored (renaming, moving to a different package) without introducing a breaking change which would require updating any existing configuration that uses that component.
**Tasks**
- Add a method `getIdentifier: String` to the interface `ComponentFactory`. `getClass.getName` may be used as a default value. (so this feature won't be a breaking change)
- Implementing components are responsible for providing a unique identifier. It's advisable to prefix the identifier with a human readable name, because it will be referenced in the configuration, logged, etc..
- Use `getIdentifier` to load the factory in `ClassLoaderUtils`. Currently, it loads the class directly given the class name. This approach doesn't work to efficiently load the factory by the identifier. With #83, component factories can be loaded using the Service Provider Interface (SPI), i.e. with `ServiceLoader`. All factories expose the `getIdentifier` method, that's how it can be found
**Other**
- The same identifier might be used by each component to prefix its configuration properties to avoid name clashes.
贡献指南
这个仓库没有索引到贡献指南
评估
这个 Issue 还没有评估数据。