Apache Felix中的@Service注释是什么?

时间:2019-04-02 02:54:53

标签: service annotations osgi aem sling

我已经阅读了几篇有关@Service@Component之间差异的文章。现在,我知道@Component是用户将对象注释为OSGi组件,然后其生命周期将由OSGi管理。 但是,用@Service将对象声明为服务的需求是未知的。如果在声明为组件的对象中编写业务逻辑会发生什么?

我还想知道以下语句意味着什么:

  

组件可以引用/调用(使用容器注入– @Reference)其他服务,但组件不能。换句话说,一个组件不能注入到另一个组件/服务中。只有服务可以注入到另一个组件中。

1 个答案:

答案 0 :(得分:4)

避免使用Felix SCR(程序包org.apache.felix.scr.annotations)中的注释。

http://felix.apache.org/documentation/subprojects/apache-felix-maven-scr-plugin/scr-annotations.html

  

注释本身不支持R6或   以上。建议使用官方的OSGi注释   而是声明式服务。

使用软件包@Component中的org.osgi.service.component.annotations,此注释将替换Felix中的@Component@Service

  • 问题2

      

    如果您在其中编写业务逻辑会发生什么   被声明为组件的对象?

    工作正常。

  • 问题3

      

    我还想知道以下语句意味着什么:

         
        

    组件可以引用/调用(使用容器注入– @Reference)其他服务,但组件不能。换句话说,一个组件不能注入到另一个组件/服务中。只有服务可以注入那里的另一个组件。

      

    这是组件共享OSGi中功能的方式。他们提供其功能作为OSGi服务。但是,当OSGi将对象注入到引用中时,就可以得到组件。

奖金:请阅读这篇文章:https://medium.com/adobetech/using-the-osgi-declarative-service-in-aem-6-4-21102f649d54