为了账号安全,请及时绑定邮箱和手机立即绑定

如何从注解中实现接口

如何从注解中实现接口

翻过高山走不出你 2021-06-02 22:29:33
我在我的项目中使用 guice 进行依赖注入。我有几个具有默认绑定的接口。我想提供一种工具,用户可以在其中实现接口,并且该自定义实现将绑定到默认实现上。如果不存在自定义实现,则应发生默认绑定。如何才能做到这一点?我想到了一种方法,用户可以使用注释对实现的类进行注释,我可以从中获取接口并将该类绑定到该接口。这可能吗?

3 回答

?
杨__羊羊

TA贡献1943条经验 获得超7个赞

此外,您可以使用 SPI

    ServiceLoader<SayHello> services = ServiceLoader.load(SayHello.class);

如果services为空,则可以新建默认实例。


查看完整回答
反对 回复 2021-06-10
?
喵喔喔

TA贡献1735条经验 获得超5个赞

当你使用spring框架时,你可以使用声明一个bean @ConditionalOnMissingBean,如果没有,你可以尝试这样实现(检查对象是否声明了bean)


查看完整回答
反对 回复 2021-06-10
?
动漫人物

TA贡献1815条经验 获得超10个赞

可能最好是有一个 BeanFactory,然后用户应该为给定的接口提供他的实现:


class BeanFactory {

    private static final Map<Class<?>, ?> beans = new HashMap<>();


    public static <T> void register(Class<T> type, T impl){

        beans.put(type, impl);

    }

}

这样你就可以让你的 bean 最初在上面的工厂中声明,然后它们可能会被用户覆盖。


class MyImpl implements MyService{

    static{

        BeanFactory.register(MyService.class, new MyImpl());

    }


    // Rest of code

}


查看完整回答
反对 回复 2021-06-10

添加回答

代码语言

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号