2013-12-17 1 views
1

에 공장 건설의 장점

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
...
components.xml
<factory auto-create="true" name="weirdDao" value="#{weirdConcreteDao}"/>

내 이론은 두 번째 예 솔은 객체의 생성 돌보는 것이있다 (희망적으로) 인스턴스의 풀과 같은 것을 제어합니다.
이 두 가지 사용법에 대한 pro/con에 대한 설명이 있습니까?
미리 감사드립니다.(내 경우에 DAO)를 심 2 나는 심에 주입 객체의 두 개의 서로 다른 전략을 본 적이

답변

1

성능 측면에서 이점은이 경우별로 중요하지 않습니다. 그러나 문제는 오히려 철학적입니다.

Factory Pattern은 잘 알려진 창조적 디자인 패턴입니다. Seam에서는 일반적으로 을 사용하여 Entity 또는 Domain 클래스의 인스턴스를 만듭니다. 그들은 일반적으로 데이터를 보유하고 처리 또는 비즈니스 로직을 가지고 있지 않습니다.

Service 또는 DAO와 같은 빈을 주입하는 경우 일반적으로 factory를 사용하지 않습니다.

주된 원인은 서비스 또는 DAO 유형 bean의 작성이 상태를 보유하지 않거나 모든 상태에 의존한다는 것입니다. 그렇다면 왜 컨테이너에 대한 책임을 쉽게 전가 할 수 있는지에 대한 팩토리 메서드 나 구성을 작성하는 데 어려움을 겪습니다.

그러나 Entity 또는 Domain 콩의 경우 국가마다 다를 수 있습니다. 예를 들어, 로그인 한 사용자에 따라 배우자 콩을 작성해야합니다. 당신이 사용자에 따라 배우자에게 빈을 생성하는 팩토리 메소드를 작성하는 것이하려면. 일반적으로 컨테이너에 의존하지 않습니다.

희망이 도움이됩니다.

관련 문제