根据HK2 @Service javadoc
我不知道如何让 ServiceLocator
自动找到带注释的类。
测试服务
@Contract
public interface TestService {
}
TestServiceImpl
@Service
public class TestServiceImpl implements TestService {
}
主要
public static void main(String[] args) {
ServiceLocator locator = ServiceLocatorUtilities.createAndPopulateServiceLocator();
TestService service = locator.getService(TestServiceImpl.class);
System.out.println(service); // null
}
结果总是
null
。我必须添加 Descriptor
以便 ServiceLocator
可以找到它。public static void main(String[] args) {
ServiceLocator locator = ServiceLocatorUtilities.createAndPopulateServiceLocator();
DynamicConfigurationService dcs = locator.getService(DynamicConfigurationService.class);
DynamicConfiguration config = dcs.createDynamicConfiguration();
config.bind(BuilderHelper.link(TestServiceImpl.class).to(TestService.class).in(Singleton.class).build());
config.commit();
TestService service = locator.getService(TestServiceImpl.class);
System.out.println(service); // TestServiceImpl instance
}
如何让
ServiceLocator
自动找到带注释的类?我是不是误会了什么? 最佳答案
您需要在构建的类上运行 hk2-inhabitant-generator 以便自动检测服务。还有更多信息 here 。
该步骤在构建过程中的作用是创建一个名为 META-INF/hk2-locator/default 的文件,其中包含有关服务的信息。然后 createAndPopulateServiceLocator 调用读取这些文件并自动将这些服务描述符添加到返回的 ServiceLocator 中。
关于java - ServiceLocator 如何在HK2 中自动查找@Service 和@Contact?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23402814/