gpt4 book ai didi

java - 如何使用 PIcocontainer

转载 作者:行者123 更新时间:2023-11-30 11:30:59 27 4
gpt4 key购买 nike

我在一个研究项目中使用 Picocontainer。我对如何使用它有疑问。

以下是我的类(class):

public class DependencySupplier {

public static MutablePicoContainer pico;

static {
pico = new DefaultPicoContainer();
pico.registerComponentImplementation(CollectionDao.class, CollectionDaoImpl.class);
pico.registerComponentImplementation(ReadingDao.class, ReadingDaoImpl.class);
pico.registerComponentImplementation(CollectionDetails.class, CollectionDetailsImpl.class);
pico.registerComponentImplementation(Reading.class, ReadingImpl.class);
}

public static CollectionDao getCollectionDao() {
return (CollectionDao) pico.getComponentInstance(CollectionDao.class);
}

public static ReadingDao getReadingDao() {
return (ReadingDao) pico.getComponentInstance(ReadingDao.class);
}
}

我的疑问是:

  1. 这是使用 pico 的正确方法吗?
  2. AddressImpl类如下:

    public class AddressImpl implements Address {

    private String address1;
    private String address2;
    private String address3;
    private String address4;

    public AddressImpl(String address1, String address2, String address3,
    String address4) {
    super();
    this.address1 = address1;
    this.address2 = address2;
    }

    public String getAddress1() {
    return address1;
    }
    public void setAddress1(String address1) {
    this.address1 = address1;
    }
    public String getAddress2() {
    return address2;
    }
    public void setAddress2(String address2) {
    this.address2 = address2;
    }
    public String getAddress3() {
    return address3;
    }
    }

我如何使用上述实现实例化 Address 对象,因为“address1”和“address2”必须由用户提供并且在运行时可用?

最佳答案

嗯,其实pico的使用方法不对...

在大多数情况下,您不应该直接从 pico 上下文中查找组件。

您需要在 pico 中注册您的 DAO、服务、其他逻辑类...它们需要获取引用的 DAO 等,只需将它们声明为构造函数参数即可。然后在注册组件的 Bootstrap 类中,您需要从容器中获取您的主要逻辑类并调用其方法(或使用 Startable 生命周期)至于地址实例,我不确定您是否需要从 pico 中实例化它们(因为我没有看到容器可能为地址实现的任何依赖项,那有什么意义呢?)

但是如果你需要的话,你仍然可以注册现成的实例,比如 pico.registerComponentInstance(new AddressImpl(...)) 然后你可以用构造函数参数 Address[] addrs 注入(inject)所有可用的实例。还有另一种方法,直接从pico中实例化几个实例,但我认为你只是不需要它

关于java - 如何使用 PIcocontainer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17448991/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com