ApacheFelix中的@Service注释是什么?
我读过几篇关于ApacheFelix中的@Service注释是什么?,service,annotations,osgi,aem,sling,Service,Annotations,Osgi,Aem,Sling,我读过几篇关于@Service和@Component之间区别的文章。现在我了解到,@Component是一个将对象注释为OSGi组件的用户,其生命周期将由OSGi管理。 但是,使用@service将对象声明为服务的必要性是未知的。如果在声明为组件的对象中编写业务逻辑,会发生什么情况 我还想知道下面的陈述是什么意思: 组件可以引用/调用(使用容器注入–@Reference)其他服务,但不能引用/调用组件。换句话说,一个组件不能注入到另一个组件/服务中。只有服务可以注入到另一个组件中 问题1: A
@Service
和@Component
之间区别的文章。现在我了解到,@Component
是一个将对象注释为OSGi组件的用户,其生命周期将由OSGi管理。
但是,使用@service
将对象声明为服务的必要性是未知的。如果在声明为组件的对象中编写业务逻辑,会发生什么情况
我还想知道下面的陈述是什么意思:
组件可以引用/调用(使用容器注入–@Reference)其他服务,但不能引用/调用组件。换句话说,一个组件不能注入到另一个组件/服务中。只有服务可以注入到另一个组件中
- 问题1:
ApacheFelix中的@Service注释是什么
:
@Service注释定义了是否和哪些服务接口
由组件提供
您应该了解,这是关于OSGi服务的概念,而不是
中描述的声明性服务(DS)概念@Component
org.apache.Felix.SCR.annotations
)
:
注释本身不支持R6或R6的新功能
在上面建议使用官方的OSGi注释
而不是声明性服务
使用packageorg.osgi.service.Component.annotations
中的@Component
,此注释将替换Felix中的@Component
和@service
- 问题2 如果将业务逻辑写入 声明为组件的对象 碰巧工作很好
- 问题3 我还想知道下面的陈述是什么意思: 组件可以引用/调用(使用容器注入–@Reference)其他服务,但不能引用/调用组件。换句话说,一个组件不能注入到另一个组件/服务中。只有服务可以注入到另一个组件中 这就是组件在OSGi中共享功能的方式。它们提供OSGi服务的功能。但是当OSGi将对象注入到引用中时,就得到了组件
奖励:阅读本文:看看下面的SO问题,也许他们已经回答了你的问题:或者我已经阅读了这些帖子,但不幸的是,没有其他关于堆栈溢出的帖子详细讨论服务注释。所以本质上,@service注释只是将组件声明为可以注入其他对象的对象。现在对于R6注释,它被声明为组件注释的一个属性?这种理解正确吗?顺便说一句,我喜欢这篇有奖文章。是的,但是
@Service
是一个附带的注释,我怀疑没有@Component
它是否能工作。不客气:)不会的。但是对于R6,您根本不需要包含服务注释。谢天谢地,OSGi注释通过组件注释中的一个属性实现了它。。。有些组件需要是服务,因此可以将它们注入到其他组件中。这是因为它们实现了一些由Java接口描述的功能。但是,有些组件不需要是服务,因为它们提供了直接与用户或环境交互的“顶级”功能。例如,实现web服务器的组件。或者实现GUI外壳的一个。或者某种只与文件交互的批处理组件。关键是,并非所有组件都只是坐在那里等待调用。