【问题标题】:Guice ThrowingProvider of interfaceGuice ThrowingProvider 接口
【发布时间】:2012-10-16 16:01:50
【问题描述】:

我对 guice 扩展没有太多经验。我会很感激一些指导。 有人可以给我一个示例,说明如何为接口而不是具体类实现抛出提供程序。

例如 javax.mail.Session。如何将代码转换为 throwing 提供程序?

public class MailSessionProvider implements Provider<Session> {

  @Inject
  @Named("mailSession")
  private static String snName;

  @Override
  public Session get() {
     Session session = null;
     try {
        Context ctx = new InitialContext();
        return (Session) ctx.lookup(snName);
     } catch (NamingException e) {

     }
     return session;
  }

}

【问题讨论】:

  • 你看过文档中的例子吗?:code.google.com/p/google-guice/wiki/ThrowingProviders
  • 是的,我做到了,它们看起来很明显,除了装订部分。我试图绑定我的实现,看起来我只能绑定一个具体的类,而不是像 Session 或 jdbc.Connection 这样的接口。所以一定是我弄错了什么

标签: guice provider throw


【解决方案1】:

从 Guice-3.0 开始,你必须像这样使用 CheckedProvider:

public class MailSessionThrowingProvider implements CheckedProvider<Session> {

@Inject
@Named("mailSession")
private static String snName;

@Override
public Session get() throws NamingException {
    final Context ctx = new InitialContext();
    return (Session) ctx.lookup(snName);
}
}

【讨论】:

    猜你喜欢
    • 2011-06-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-09-10
    • 2015-04-26
    • 1970-01-01
    相关资源
    最近更新 更多