Java Guice@提供了带有可选可空注入的函数,但该函数不起作用

Java Guice@提供了带有可选可空注入的函数,但该函数不起作用,java,inversion-of-control,guice,Java,Inversion Of Control,Guice,代码优先: @Slf4j public class HelperModule extends AbstractModule { @Override protected void configure() { } @Provides @Named("plugin") @Singleton public Reflections getReflections(@Nullable @Named("plugin-scope") String

代码优先:

@Slf4j
public class HelperModule extends AbstractModule
{
    @Override
    protected void configure()
    {

    }

    @Provides
    @Named("plugin")
    @Singleton
    public Reflections getReflections(@Nullable @Named("plugin-scope") String pluginScope)
    {
        if (pluginScope == null)
        {
            pluginScope = "me.wener";
        }
        log.info("Create plugin scanner for '{}'", pluginScope);
        return new Reflections(new ConfigurationBuilder()
                .setUrls(ClasspathHelper.forPackage(pluginScope))
                .addScanners(
                        new SubTypesScanner(),
                        new TypeAnnotationsScanner())
//                .filterInputsBy(new FilterBuilder().include(".*\\.java").exclude(".*"))
        );
    }
}
我所期望的是,
pluginScope
可以是空的和可选的,我按照说明进行操作,但这不起作用,我仍然得到了

No implementation for java.lang.String annotated with @com.google.inject.name.Named(value=plugin-scope) was bound
怎么了

编辑
顺便说一句,
@Nullable
javax.annotation.Nullable
A
@Nullable
注释意味着您可以绑定到返回
null
的提供程序,而不是不存在绑定。您的@Nullable注释将允许以下操作:

bind(String.class).annotatedWith(Names.named("plugin-scope"))
    .toProvider(Providers.<String>of(null));
bind(String.class).annotatedWith(name.named(“插件范围”))
.toProvider(提供者)(空);

您必须显式绑定到
null
的提供程序,而不是
toInstance(null)
,根据。

关于
@Inject(optional=true)
?@MilanBaran已尝试,但仍不正确