首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >可选依赖项,Spring和JSR330

可选依赖项,Spring和JSR330
EN

Stack Overflow用户
提问于 2015-11-06 23:26:31
回答 1查看 127关注 0票数 0

根据JSR330的讨论,他们拒绝了@Optional注释,因为javax.inject.Provider接口可以完成相同的工作。我没有做到的是,或者没有找到任何示例,是如何在Spring中实现JSR330所期望的提供者。如果我没有添加一个满足Provider<MyBean>.get()的bean,比如MyBean,它会抛出一个异常。我知道我可以使用@Autowire注解,但我想知道有谁可以演示一个实际工作的实现,证明JSR330最初反对@Optional的理由是正确的?谢谢。

EN

回答 1

Stack Overflow用户

发布于 2016-09-13 18:27:30

我决定实现我自己的Provider类,而不是JSR330的类。这就变成了强制依赖,它实际上(很像ProviderOptional类)有一个提供对象的getObject()方法。不幸的是,你无法避免框架依赖,所以我最终在我的框架依赖类中实现了接口,利用框架属性来做可选的依赖,例如:

代码语言:javascript
复制
public class ThreadServiceProvider implements OptionalDependency<ScheduledExecutorService> {

    /** Spring executor factory bean. */
    private ScheduledExecutorFactoryBean provider = null;

    @Override
    public final ScheduledExecutorService getObject() {
        if (provider != null) {
            return provider.getObject();
        }
        return null;
    }

    /**
     * 
     * Sets the factory bean for providing threads.
     * 
     * @param factory
     *            Spring thread factory bean.
     */
    @Autowired(required = false)
    public final void setProvider(final ScheduledExecutorFactoryBean factory) {
        provider = factory;
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33570112

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档