2013-04-29 2 views
2

유틸리티 클래스에는 간단한 이전 스타일의 정적 메소드가 있습니다. 나는 매번 요구되는 paramterised 오브젝트로 인해 "CDI"에 어려움을 겪고 있습니다.이 접근법에 최선의 노력을 기울이는 데 도움이되는 도움이 필요하십니까?CDI (Weld JEE6)에 대한 정적 유틸리티 메소드

즉 여러 클래스에 유틸리티 클래스를 삽입하고 아래의 메소드를 호출하고 싶습니다. 유틸리티 클래스는 차례대로 올바른 매개 변수로 ByteArrayInputStream, ObjectInputStream을 삽입합니다 ...

올드 클래스 :

public class Utils { 


     public static Object fromByteArray(final byte[] data) throws IOException, ClassNotFoundException { 

       final ByteArrayInputStream b = new ByteArrayInputStream(data); 
       final ObjectInputStream o = new ObjectInputStream(b); 
       return o.readObject(); 
     } 


     public static byte[] toByteArray(final MyObj tx) throws IOException{ 
       final ByteArrayOutputStream b = new ByteArrayOutputStream(); 
       final ObjectOutputStream o = new ObjectOutputStream(b); 
       o.writeObject(tx); 
       return b.toByteArray(); 
     } 

} 

감사합니다 ...

답변

3

는 이러한 목표를 달성하기 위해 여러 가지 방법이 있습니다. 두 가지 가능성 :

은 단순히 빈의 방법/생성자에서 이것을 사용

:

Object object = Utils.fromByteArray(...); 

그것을 주입 : 당신은 모든 클래스 Utils을 수정할 필요가 없습니다

@Inject 
private Utils utils; 

.

+0

몇 가지 방법이 있습니다. 위의 대답은 작동합니다. 생성자가 없으므로 실제로는 이미 CDI 빈 (bean)이며, 종속 영역 (scoped)에만 의존한다. 필요에 따라 주사하고 통화 할 수 있습니다. 이벤트도 사용할 수 있습니다. – LightGuard

+0

@ LightGuard 그래서 실제로 어떤 스코프가 필요하지 않습니까? 그에 따라 내 대답이 바뀌 었습니다. – Aquillo

+1

아니요, 범위가 필요하지 않습니다. 기본적으로 범위가 선언되지 않은 Bean은 Dependent입니다. 즉, Bean이 생성되어 인스트루먼트 된 다음 Bean에 삽입되고 다른 필드와 같아서 포함 된 Bean이 파기 될 때까지 지속됩니다. – LightGuard

관련 문제