Man*_*sha 4 components osgi aem
我遇到了OSGi中@Component的一个属性,该属性我无法通过docs理解,也没有得到任何详细信息,即已启用。
已启用
enabled
Default: true
SCR Descriptor: component.enabled
Metatype Descriptor: --
Run Code Online (Sandbox Code Playgroud)
捆绑包启动时是否启用组件
即时
immediate
Default: --
SCR Descriptor: component.immediate
Metatype Descriptor: --
Run Code Online (Sandbox Code Playgroud)
是否立即激活组件
尽管我知道“激活组件”,但是我不理解“启用组件”一词的含义是什么?
在用例或示例的帮助下的任何答案,以及何时使用的内容,都将受到赞赏。
先感谢您。
enabled=true默认情况下,组件是指,一旦满足它们的依赖关系(例如,所需的配置和/或强制性服务引用),就可以激活它们。
enabled=false即使满足其所有依赖关系的组件也将无法激活。它已完全禁用,将无法启动。
那么...这有什么用?好吧,可以通过同一捆绑包中的另一个组件以编程方式启用禁用的组件。
主要用例是共享初始化。假设您有一个包含几个组件的捆绑软件,所有这些组件都需要等待某些初始化步骤发生,例如设置一堆文件。您可以制作除一个以外的 所有组件enabled=false。单个启用的组件在其激活方法中进行初始化,然后调用ComponentContext.enableComponent(null)以启用捆绑中的所有其他组件。
immediate是一个完全独立且正交的生命周期概念。提供服务的组件默认情况下是“延迟的”,这意味着仅当其他捆绑软件实际使用该服务时才加载和激活该组件。这是一个非常有用的延迟加载优化。但是,有时即使没有人使用它的服务,您也希望组件尽快启动。在那种情况下,您设置immediate=true。
| 归档时间: |
|
| 查看次数: |
811 次 |
| 最近记录: |