【发布时间】:2019-02-23 13:41:43
【问题描述】:
鉴于下面的 EJB,容器是否足够智能以仅创建使用的对象?
@Stateless
public class MyBean {
@EJB
Clazz1 obj1;
@EJB
Clazz2 obj2;
public void run(int x) {
if (x == 1)
obj1.printCode();
else
obj2.printCode();
}
}
【问题讨论】:
-
错误,它们都被使用了。构造 MyBean 时会注入 obj1 和 obj2。然后每次调用 run() 时都会调用 obj1 或 obj2,这可能是很多次。
-
假设注入了几十个类,多次构造bean,有没有设计模式,比如工厂,可以用来处理这种场景?
-
您已经在使用一种设计模式:依赖注入。看起来你很关心性能,但是注入几十个对象不会导致任何性能问题。如果你真的在一个 bean 中注入了几十个依赖项,你真的应该关心设计和可维护性。一个拥有几十个不同依赖项的 bean 显然有太多的责任。
标签: java jakarta-ee ejb cdi java-ee-8