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

Vis*_*-CQ 4 service osgi annotations sling aem

我读过有关的区别几篇文章@Service@Component。现在我明白@Component是用户将对象注释为 OSGi 组件,然后它的生命周期将由 OSGi 管理。但是,@Service未知需要将对象声明为服务。如果在声明为组件的对象中编写业务逻辑会发生什么?

我也想知道下面的语句是什么意思:

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

Mar*_*ski 5

避免使用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,这个注解取代了@Component@Service来自菲利克斯。

  • 问题2

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

    碰巧工作正常。

  • 问题 3

    我也想知道下面的语句是什么意思:

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

    这就是组件在 OSGi 中共享功能的方式。它们以 OSGi 服务的形式提供它们的特性。但是当 OSGi 将对象注入到引用中时,你就得到了你的组件。

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