如何从注释中实现接口

时间:2018-07-25 03:36:29

标签: java

我在项目中使用guice进行依赖项注入。我有一些接口具有默认绑定。

我想提供一种工具,用户可以在其中实现该接口,并且自定义实现将被绑定到默认接口上。如果没有自定义实现,则应进行默认绑定。

这怎么办? 我想到了一种方法,其中用户使用注释来注释实现的类,然后可以从中获取接口并将该类绑定到该接口。这可能吗?

请帮助。

谢谢。

3 个答案:

答案 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为空,则可以新建默认实例。

相关问题