为什么会出现“类必须具有一个(只有一个)构造函数”错误?

卡茨·卡特尔

我一直在努力使Guice工作,但最终结果是:

类必须具有一个(也只有一个)构造函数

我的界面:

public interface AddrBookStore {
    public Contact getContactByKey(String key);
    public void addContact(Contact c);
}

实现:

public class RdbmsBasedAddrBookStore implements AddrBookStore {
    private Connection connection;

    public RdbmsBasedAddrBookStore(Connection connection) {
        this.connection = connection;
    }

    @Override
    public Contact getContactByKey(String key) throws AddrBookException
    {} 
    @Override
    public void addContact(Contact c) throws AddrBookException
    {}
}

绑定模块:

public class ABguiceConfingModule extends AbstractModule {
    @Override
    protected void configure() {        
        bind(AddrBookStore.class).to(RdbmsBasedAddrBookStore.class);
    }
}

AddrBook我要注入客户:

public class AddrBook {
    private AddrBookStore store;

    @Inject
    public AddrBook(AddrBookStore store)
    {
        this.store = store;
    }
    ... other methods;
}

而我的主要:

public class App 
{
    public static void main( String[] args ) throws Exception
    {
        Injector injector = Guice.createInjector(new ABguiceConfingModule() );
        AddrBookStore store = injector.getInstance( AddrBookStore.class );

        AddrBook book = new AddrBook(store);
        AddrBookCLI cli = new AddrBookCLI(book);
        cli.interact(new InputStreamReader(System.in), new OutputStreamWriter(System.out));

}}

毕竟,我得到了这个错误:

1) Could not find a suitable constructor in addrbook.store.RdbmsBasedAddrBookStore. Classes must have either one (and only one) constructor annotated with @Inject or a zero-argument constructor that is not private.
[ERROR] at addrbook.store.RdbmsBasedAddrBookStore.class(RdbmsBasedAddrBookStore.java:23)
[ERROR] at addrbook.ABguiceConfingModule.configure(ABguiceConfingModule.java:13)

我对Spring有经验,而对Guice没有经验。我在哪里错了?

durron597

您尚未为设置主要依赖项AddrBookStore您需要具有的绑定Connection,然后需要使用来注释构造函数@Inject

您已经设置了AddrBookStore该类,但显然它包装了Rdbms ...,但您尚未设置Rdbms

在Guice中有很多方法可以做到这一点,在这种情况下,我可能会使用来完成Provider<Connection>,这样您就可以拥有一个完整的类来放置用于旋转与数据库的连接的代码,如下所示:

public class ConnectionProvider implements Provider<Connection> {
    public Connection get() {
        // put your code that connects to the database here
    }
}

那么您的模块将是:

public class ABguiceConfingModule extends AbstractModule {
    @Override
    protected void configure() {
        bind(AddrBookStore.class).to(RdbmsBasedAddrBookStore.class);
        bind(Connection.class).toProvider(ConnectionProvider.class);
    }
}

最后是您的AddrBookStore

public class RdbmsBasedAddrBookStore implements AddrBookStore {
    private Connection connection;

    @Inject
    public RdbmsBasedAddrBookStore(Connection connection) {
        this.connection = connection;
    }

    @Override
    public Contact getContactByKey(String key) throws AddrBookException
    {}

    @Override
    public void addContact(Contact c) throws AddrBookException
    {}
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

当只有一个具有指定类名的元素时,为什么必须使用“最接近”?

来自分类Dev

为什么我们只有一个带有@Inject批注的构造函数?

来自分类Dev

如何在 kotlin 中定义一个只有一个构造函数的类?

来自分类Dev

为什么要创建一个只有1个静态函数的类?

来自分类Dev

为什么不只有一个?复制构造函数和赋值运算符

来自分类Dev

为什么一类只有一个析构函数?

来自分类Dev

当只有一个实现类时,为什么要使用一个接口?

来自分类Dev

为什么函数返回一个只有一个成员的列表?

来自分类Dev

Isabelle函数为什么必须至少具有一个参数?

来自分类Dev

Isabelle函数为什么必须至少具有一个参数?

来自分类Dev

如果工会中只有一个成员没有默认构造函数,为什么会删除它呢?

来自分类Dev

当类只有一个私有构造函数时,如何创建代理?

来自分类Dev

为什么会出现错误:“。isValid()”不是一个函数?

来自分类Dev

只有一个类的一个实例

来自分类Dev

为什么一个类中有多个类构造函数,它们的可能用途是什么?

来自分类Dev

为什么在每个Fragment中都必须有一个公共的空构造函数?

来自分类Dev

为什么在每个Fragment中都必须有一个公共的空构造函数?

来自分类Dev

为什么只有一个警告循环?

来自分类Dev

为什么此查询只有一个结果?

来自分类Dev

为什么只有最后一个输入是存储?

来自分类Dev

为什么只有一个 VBA 错误处理程序处理错误?

来自分类Dev

为什么出现错误,例如“ flask-socket-io连接事件的“方法必须具有第一个参数,通常称为'self'”

来自分类Dev

当我尝试向扩展另一个类的类添加新的构造函数时,为什么会有此错误消息?

来自分类Dev

错误:secretOrPrivateKey必须具有一个值

来自分类Dev

为什么人们在只有一个元素时使用 html 中的类

来自分类Dev

用私有构造函数测试一个类

来自分类Dev

为什么只有在第一个函数之后才更改数组值?

来自分类Dev

为什么只有我在 onClick 中的一个函数执行?

来自分类Dev

一维数组传递给两个函数,只有一个函数输出正确的结果。为什么?

Related 相关文章

  1. 1

    当只有一个具有指定类名的元素时,为什么必须使用“最接近”?

  2. 2

    为什么我们只有一个带有@Inject批注的构造函数?

  3. 3

    如何在 kotlin 中定义一个只有一个构造函数的类?

  4. 4

    为什么要创建一个只有1个静态函数的类?

  5. 5

    为什么不只有一个?复制构造函数和赋值运算符

  6. 6

    为什么一类只有一个析构函数?

  7. 7

    当只有一个实现类时,为什么要使用一个接口?

  8. 8

    为什么函数返回一个只有一个成员的列表?

  9. 9

    Isabelle函数为什么必须至少具有一个参数?

  10. 10

    Isabelle函数为什么必须至少具有一个参数?

  11. 11

    如果工会中只有一个成员没有默认构造函数,为什么会删除它呢?

  12. 12

    当类只有一个私有构造函数时,如何创建代理?

  13. 13

    为什么会出现错误:“。isValid()”不是一个函数?

  14. 14

    只有一个类的一个实例

  15. 15

    为什么一个类中有多个类构造函数,它们的可能用途是什么?

  16. 16

    为什么在每个Fragment中都必须有一个公共的空构造函数?

  17. 17

    为什么在每个Fragment中都必须有一个公共的空构造函数?

  18. 18

    为什么只有一个警告循环?

  19. 19

    为什么此查询只有一个结果?

  20. 20

    为什么只有最后一个输入是存储?

  21. 21

    为什么只有一个 VBA 错误处理程序处理错误?

  22. 22

    为什么出现错误,例如“ flask-socket-io连接事件的“方法必须具有第一个参数,通常称为'self'”

  23. 23

    当我尝试向扩展另一个类的类添加新的构造函数时,为什么会有此错误消息?

  24. 24

    错误:secretOrPrivateKey必须具有一个值

  25. 25

    为什么人们在只有一个元素时使用 html 中的类

  26. 26

    用私有构造函数测试一个类

  27. 27

    为什么只有在第一个函数之后才更改数组值?

  28. 28

    为什么只有我在 onClick 中的一个函数执行?

  29. 29

    一维数组传递给两个函数,只有一个函数输出正确的结果。为什么?

热门标签

归档