java Seam 2中内置工厂的优势是什么
我见过在Seam中注入对象的两种不同策略(在我的例子中是DAO)
1.
@In(create="true")
private WeirdDao weirdDao;
...
@Name("weirdDao")
public class WeirdConcreteDao implements WeirdDao
2.
@In
private WeirdDao weirdDao;
...
@Name("weirdConcreteDao")
public class WeirdConcreteDao implements WeirdDao
...
组件。xml
<factory auto-create="true" name="weirdDao" value="#{weirdConcreteDao}"/>
我的理论是,在第二个示例中,Seam负责对象的创建,并(希望)控制类似实例池的内容。
这两种用法的正反两方面有什么官方解释吗?
提前谢谢
# 1 楼答案
在这种情况下,性能方面的优势并不是那么重要。但这个问题相当哲学化
Factory Pattern是一种著名的创意设计模式。在Seam中,我们通常使用
factory method
来创建Entity
或Domain
类型类的实例。它们通常保存数据,没有任何处理或业务逻辑对于注入服务或DAO之类的bean,我们通常不使用factory
主要原因是,服务或DAO类型bean的创建不包含状态,也不依赖于任何状态。那么,为什么我要为它编写工厂方法或配置,这样我就可以轻松地将责任转移到容器上呢
但是在
Entity
或Domain
的情况下,类型bean可能因状态而异。例如,您需要根据登录的用户创建配偶bean。为此,根据用户编写一个工厂方法来创建配偶bean。通常情况下,您不需要依靠容器来实现这一点希望这有帮助