我有工厂服务 -
com.adobe.test.MyService
我已经在其属性中配置了多个配置。 我想在我的任何一个类中使用特别配置的服务实例。 我可以使用像 -
这样的注释@Reference("uniqueId=878")
MyService myService
但是如果我想使用像 -
这样的吊索方法呢?com.adobe.test.MyService myService = sling.getService(com.adobe.test.MyService.class);
我在哪里以及如何为我感兴趣的特定实例定义唯一ID?
答案 0 :(得分:3)
对象 sling 是SlingSriptHelper的一个实例,其方法getServices接受String作为第二个参数,代表过滤。
您可以找到此类过滤示例there。您可以在OSGi规范中找到过滤器语法的完整规范。
答案 1 :(得分:0)
请试试这个
static <T> T getService(Class<T> serviceClass) {
BundleContext bContext = FrameworkUtil.getBundle(serviceClass).getBundleContext();
ServiceReference sr = bContext.getServiceReference(serviceClass.getName());
return serviceClass.cast(bContext.getService(sr));
}
然后你可以调用服务
MyService ms = getService(MyService.class);