我有一个服务(位于core / services内部)和服务实现(位于core / services / impl)。
我有一个扩展com.adobe.cq.sightly.WCMUsePojo的现有类(位于core / impl / view / components内部)。使用getSlingScripterHelper,此类可以访问我上面提到的服务。
我正在尝试不使用WCMUsePojo来访问服务。我该怎么办?
谢谢!
答案 0 :(得分:3)
您可以直接从服务注册中心获得服务-
final Bundle bundle = FrameworkUtil.getBundle(this.getClass());
final BundleContext bundleContext = bundle.getBundleContext();
ServiceReference<MyService> ref = bundleContext.getServiceReference(MyService.class)
MyService myService = bundleContext.getService(ref);
// use the service
bundleContext.ungetService(ref);
答案 1 :(得分:2)
您可以使用@Reference
从任何其他类中调用服务,而无需使用WCMUsePojo。
class MyClass
{
@Reference
private MyService myService;
void myMethod()
{
myServie.callYourServiceMethod();
}
}
答案 2 :(得分:0)
您可以分享有关用例的更多详细信息吗?
如果要从HTL脚本支持bean访问服务,则可以使用Sling模型(而不是WcmUsePojo),并使用@Inject
批注注入对服务的引用。