我有一个服务(位于核心/服务内)和服务实现(位于核心/服务/ impl)。
我有一个扩展com.adobe.cq.sightly.WCMUsePojo的现有类(位于core / impl / view / components内)。使用getSlingScripterHelper,这个类可以接受我上面提到的服务。
我试图在不使用WCMUsePojo的情况下访问该服务。我该怎么做?
谢谢!
您可以直接从服务注册表获得服务 -
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);
您可以使用@Reference
从任何其他类调用服务,而无需使用WCMUsePojo。
class MyClass
{
@Reference
private MyService myService;
void myMethod()
{
myServie.callYourServiceMethod();
}
}
如果要从HTL脚本支持bean访问服务,可以使用Sling Model(而不是WcmUsePojo)并使用@Inject
注释将引用注入服务。