我在项目中使用guice进行依赖项注入。我有一些接口具有默认绑定。
我想提供一种工具,用户可以在其中实现该接口,并且自定义实现将被绑定到默认接口上。如果没有自定义实现,则应进行默认绑定。
这怎么办? 我想到了一种方法,其中用户使用注释来注释实现的类,然后可以从中获取接口并将该类绑定到该接口。这可能吗?
请帮助。
谢谢。
答案 0 :(得分:0)
使用spring框架时,可以使用带有@ConditionalOnMissingBean
的bean声明,如果没有,可以尝试这样实现(检查对象是否声明了bean)
答案 1 :(得分:0)
可能最好是拥有一个BeanFactory,然后用户应提供给定接口的实现:
npm install
这样,您可以将bean最初在上述工厂中声明,然后它们可能会被用户覆盖。
class BeanFactory {
private static final Map<Class<?>, ?> beans = new HashMap<>();
public static <T> void register(Class<T> type, T impl){
beans.put(type, impl);
}
}
答案 2 :(得分:0)
另外,您可以使用SPI
ServiceLoader<SayHello> services = ServiceLoader.load(SayHello.class);
如果services
为空,则可以新建默认实例。