如何抢占Guice的可选组件的CreationException

时间:2012-11-28 00:58:09

标签: guice

我有一个类:

class Foo {
    Foo(@Named("x") x) { ... }
}

x绑定自Properties对象:

Names.bindProperties(binder(), props);

但如果未设置x,我想跳过绑定Foo。实现这一目标的一种方法是:

if (props.contains("x")) {
    bind(Foo.class);
}

但是有更好的方法吗?

if (namedPropsBound(Foo.class)) { // how to implement this method?
    bind(Foo.class);
}

1 个答案:

答案 0 :(得分:1)

是:用@Nullable注释x应该做的伎俩。当然,这只允许在Foo中注入缺失的X,它不会避免注入Foo。

试试这个: 您可以使用http://code.google.com/p/google-guice/wiki/CustomInjections中所述的TypeListener。每当Guice尝试注入Foo时,您可以根据属性的状态来阻止它。