用Guice写Java - 编程入门网
它的效果等价于: bind(int.class).annotatedWith(TheAnswer.class).toInstance(42); 当需要注入这些类型的数值时,如果 Guice 找不到指向基本数据类型的显式绑定,它 会找一个指向相应的封装类型的绑定,反之亦然。 用Guice写Java(9)时间:2011-04-02 王咏刚转换字符串 如果 Guice 仍然无法找到一个上述类型的显式绑定,它会去找一个拥有相同绑定标注 的常量 String 绑定,并试图将字符串转换到相应的值。例如: bindConstant().annotatedWith(TheAnswer.class).to("42"); // String! 会匹配: @Inject @TheAnswer int answer; 转换时,Guice 会用名字去查找枚举和类。Guice 在启动时转换一次,这意味着它提 前做了类型检查。这个特性特别有用,例如,当绑定值来自一个属性文件的时候。 定制的提供者 有时你需要手工创建你自己的对象,而不是让 Guice 创建它们。例如,你可能不能为 来自第三方的实现类添加 @Inject 标注。在这种情况下,你可以实现一个定制的 Provider。Guice 甚至可以注入你的提供者类。例如:
你可以像这样把 Widget 绑定到 WidgetProvider: bind(Widget.class).toProvider(WidgetProvider.class); 注入定制的提供者可以使 Guice 提前检查类型和依赖关系。定制的提供者可以在任意 作用域中使用,而不依赖于他们所创建的类的作用域。缺省情况下,Guice 为每一次注入 创建一个新的提供者实例。在上例中,如果每个 Widget 需要它自己的 Service 实例, 我们的代码也没有问题。通过在工厂类上使用作用域标注,或为工厂类创建单独的绑定, 你可以为定制的工厂指定不同的作用域。 示例:与 JNDI 集成 例如我们需要绑定从 JNDI 得到的对象。我们可以仿照下面的代码实现一个可复用的 定制的提供者。注意我们注入了 JNDI Context:
用Guice写Java(10)时间:2011-04-02 王咏刚感谢泛型擦除(generic type erasure)技术。我们必须在运行时将依赖传入类中。 你可以省略这一步,但在今后跟踪类型转换错误会比较棘手(当 JNDI 返回错误类型的对 象的时候)。 我们可以使用定制的 JndiProvider 来将 DataSource 绑定到来自 JNDI 的一个对象 :
|
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |