gpt4 book ai didi

components - OSGi 组件中@Component 的 'enable=true' 属性是什么?

转载 作者:行者123 更新时间:2023-12-03 12:40:04 25 4
gpt4 key购买 nike

我在 OSGi 中遇到了 @Component 的一个属性,我无法通过文档了解它,也没有获得任何详细信息,即启用。

我从 Felix documentation about scr annotation 得到的是:

启用

enabled 
Default: true
SCR Descriptor: component.enabled
Metatype Descriptor: --

Whether the component is enabled when the bundle starts



立即
immediate 
Default: --
SCR Descriptor: component.immediate
Metatype Descriptor: --

Whether the component is immediately activated



虽然我知道“激活组件”,但我不明白“启用组件”是什么意思?

任何在用例或示例的帮助下的答案,何时使用什么,都更受欢迎。

先感谢您。

最佳答案

组件是 enabled=true默认情况下,这意味着它们将在它们的依赖项一出现就可用于激活——例如所需的配置和/或强制性服务引用 - 已得到满足。

一个组件是 enabled=false即使满足所有依赖项,也将无法激活。它被完全禁用并且不会启动。

那……这有什么用??好吧,一个禁用的组件可以由同一包中的另一个组件以编程方式启用。

主要用例是 共享初始化 .假设您有一个包含多个组件的包,这些组件都需要等待一些初始化步骤发生,比如设置一堆文件。您可以制作所有组件 除了一个 enabled=false .单个启用的组件在其激活方法中进行初始化,然后调用 ComponentContext.enableComponent(null)启用捆绑中的所有其他组件。
immediate是一个完全独立和正交的生命周期概念。默认情况下,提供服务的组件是“延迟的”,这意味着该组件仅在其他一些包实际使用该服务时才加载和激活。这是一个非常有用的延迟加载优化。然而,有时您希望您的组件尽快启动,即使没有人使用它的服务。在这些情况下,您设置 immediate=true .

关于components - OSGi 组件中@Component 的 'enable=true' 属性是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49914540/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com