Expand my Community achievements bar.

Applications for the 2024-2025 Adobe Experience Manager Champion Program are open!
SOLVED

Sling Annotations

Avatar

Level 7

Which annotation is prefered to access the Service inside another service and why? @reference or @OSGiService.

 

Thanks

1 Accepted Solution

Avatar

Correct answer by
Community Advisor

Hi @Madhur-Madan,

On OSGi service level you should use Reference annotation. So this will be option you should use in case you want to get reference of other OSGi service inside another.

import org.osgi.service.component.annotations.Component;
import org.osgi.service.component.annotations.Reference;

@Component
public class YourService {
   
   @Reference
   private OtherService otherService;
}

 

OSGiService annotation is dedicated for Sling Model it will not work inside OSGi service/component. You can use it, in case you would like to inject OSGi Service into your Sling Model.

See also below links:

View solution in original post

1 Reply

Avatar

Correct answer by
Community Advisor

Hi @Madhur-Madan,

On OSGi service level you should use Reference annotation. So this will be option you should use in case you want to get reference of other OSGi service inside another.

import org.osgi.service.component.annotations.Component;
import org.osgi.service.component.annotations.Reference;

@Component
public class YourService {
   
   @Reference
   private OtherService otherService;
}

 

OSGiService annotation is dedicated for Sling Model it will not work inside OSGi service/component. You can use it, in case you would like to inject OSGi Service into your Sling Model.

See also below links: