Java Apache Felix SCR@参考备忘单
我正在我的应用程序中使用ApacheFelix声明性服务,我正在寻找一份备忘单,其中描述了可以提供给Java Apache Felix SCR@参考备忘单,java,apache-felix,declarative-services,Java,Apache Felix,Declarative Services,我正在我的应用程序中使用ApacheFelix声明性服务,我正在寻找一份备忘单,其中描述了可以提供给@Reference注释的参数。有一次我看到一个网页,里面有一张关于它的内容丰富的备忘单(或表格),但我似乎找不到。我认为这对很多Felix用户来说都很有用。我所说的参数是: 基数:强制一元、强制多元、可选一元、可选多元 策略:事件,查找 策略:动态、静态 政策选项:贪婪、不情愿 基数相当简单,但其他方面我不清楚。它们做什么以及如何工作?摘自官方第281ff页 参考基数 可以将引用的基数指定为
@Reference
注释的参数。有一次我看到一个网页,里面有一张关于它的内容丰富的备忘单(或表格),但我似乎找不到。我认为这对很多Felix用户来说都很有用。我所说的参数是:
- 基数:
强制一元、强制多元、可选一元、可选多元
- 策略:
事件,查找
- 策略:
动态、静态
- 政策选项:
贪婪、不情愿
- 0..1–可选和一元
- 1..1–强制和一元(默认)
- 0..n–可选和多个
- 1..n–强制和多重
- 事件策略–当服务绑定时,SCR调用组件实例上的方法, 当服务解除绑定或更新其属性时。这些方法是 由引用指定的绑定、更新和解除绑定方法。如果 组件需要通知绑定服务的更改,以进行动态引用
- 查找策略–组件实例可以使用ComponentContext的locateService方法之一 查找绑定服务。这些方法将引用的名称作为参数。 如果引用具有动态策略,则重要的是不要存储返回的服务 对象,但每次需要时都要查找它
- 静态策略是最简单的策略,也是默认策略。组件实例从未看到任何动态。组件配置在具有静态策略的引用的任何绑定服务不可用之前停用。如果目标服务可用于替换绑定的服务(该服务已不可用),则必须重新激活组件配置并将其绑定到替换服务
- 动态策略稍微复杂一些,因为组件实现必须正确处理绑定服务集中可能在任何线程上发生的更改。使用动态策略,SCR可以在不停用组件配置的情况下更改绑定服务集。如果组件使用事件策略访问服务,那么将通过调用bind和unbind方法通知组件实例绑定服务集中的更改
- 不情愿的–尽量减少重新绑定和重新激活
- 贪婪–通过停用静态引用或重新绑定动态引用,最大限度地利用最佳服务
()请不要发布仅链接的答案。