我正在尝试在我的项目中使用picoContainer。我对它知之甚少,但我想试一试。
据我所知,我必须创建一个picoContainer并用它注册组件。这是我做的
public static PicoContainer getPicoContainer(){
final MutablePicoContainer pico = new DefaultPicoContainer();
pico.registerComponentImplementation(X.class);
pico.registerComponentImplementation(A.class);
pico.registerComponentImplementation(C.class);
pico.registerComponentImplementation(V.class);
pico.registerComponentImplementation(T.class);
pico.registerComponentImplementation(D.class);
return pico;
}现在我的问题是,任何组件要获得另一个组件,都需要一个pico上的句柄。要访问任何组件,它需要这样做
A juicer = pico.getComponent(A.class);那么,在它们的构造函数中,我需要传入pico对象吗?我可以很容易地用一个工厂来代替它。那又有什么意义呢?我肯定我漏掉了什么。都会很感谢你的帮助。
发布于 2014-02-19 15:28:10
常见的模式是在某个地方为主容器设置一个工厂。对于独立的应用程序,它可能是"public static void main()“入口点,对于web应用程序,它将是前端控制器servlet或过滤器或上下文侦听器(pico具有侦听器情况的支持类)。因此,在入口点,您可以按照上面提到的"public static PicoContainer getPicoContainer()“的方式配置容器,然后需要将控制权传递给容器中的一个入口点。最好的方法是让至少一个容器的组件实现生命周期接口(http://picocontainer.codehaus.org/lifecycle.html),然后启动()容器并将所有内容连接起来。在正常情况下,除了条目配置和特殊工厂或事务划分等内容之外,您永远不应该访问容器本身。
https://stackoverflow.com/questions/21841460
复制相似问题