假设我有两个类 A 和 B,B 依赖于 A。
public class A {}
public class B {
public B(A a) {}
}
在单个 PicoContainer 中解析 B 很容易。
final MutablePicoContainer root = new PicoBuilder().build();
root.addComponent(new A());
root.addComponent(B.class, B.class);
System.out.println(root.getComponent(B.class));
但我想为不同的 session 使用不同的 B
实例,以及 A
的可变实例。我正在考虑这样的事情。
// during startup
final MutablePicoContainer root = new PicoBuilder().build();
root.addComponent(B.class, B.class);
// later, initialize sessions
final MutablePicoContainer session = new PicoBuilder(root)
.implementedBy(TransientPicoContainer.class)
.build();
session.addComponent(new A());
// some request
System.out.println(session.getComponent(B.class));
上面的代码不起作用,因为当向 session
询问 B
时,它向父容器 root
询问它。 B
在那里找到,但仅在 root
及其父级中解析,导致 UnsatisfiableDependenciesException。
请问有什么好的方法可以实现吗?或者这是一种反模式,我以错误的方式解决了问题?
最佳答案
解决不存在的性能问题不是一个好的方法。您是否进行了任何分析以验证问题?
如果没有,请考虑先这样做。
关于java - 如何使用 PicoContainer 管理动态依赖项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/852579/