2012-02-10 2 views
0

헬퍼 구성 요소가 여러 클래스에 사용되었습니다. 이것은 일반적인 시나리오입니다 :정적 속성 주입 구성 모범 사례

public class HelperComponent 
{ 
    public void HelperMethod() 
    { 
     // do something 
    } 
} 

public class MyClass 
{ 
    private static HelperComponent Helper{ get; set;} 

    public void Method1() 
    { 
     Helper.HelperMethod(); 
    } 
} 

사용 : new MyClass().Method1();

나는이 구성 spring.net 구성/솔루션을 권장 무엇인지 알고 싶습니다?

ContextRegistry.GetContext().GetObject("HelperComponentName") 

그럼 I이 바람직 용액 아니라고 읽고 I 스프링 투명 컴포넌트 사용하도록 의존성을 회피하기 위해 주사를 사용해야 : 처음에 I 헬퍼 요소를 페치하기 위해이 라인을 사용했다.

내 질문은 : 스프링 구성을 사용하여 어떻게 이것을 할 수 있습니까?

클래스에 정적 속성을 삽입 할 수 있습니까? 아니면 도우미 인스턴스 속성을 만들어야합니까? Helper를 인스턴스 속성으로 변환하면 Spring 구성에서 MyClass를 정의하고 CreateObject를 사용하여 MyClass를 인스턴스화해야합니까?
그렇다면 위와 같이 MyClass를 인스턴스화하고 싶습니다.

도움을 주시면 감사하겠습니다.

+1

저는 스프링에 익숙하지 않지만, (생성자 또는 속성을 통해) 의존성을 주입하고, 비 정적으로 만들고, IOC 컨테이너를 통해 라이프 사이클을 관리합니다. Spring은 HelperComponent의 수명주기를 Singleton으로 설정하는 방법을 가져야합니다. –

+0

@dtryon 이미 (context.GetObject())를 사용하여 검색 했으므로 이미 완료했습니다. 하지만 Helper를 non.static으로 설정하면 어떻게 MyClass를 인스턴스화 할 수 있습니까? 내가 말했듯이 컨텍스트를 사용하고 싶지 않습니다. CreateObject. – Filip

+1

일반적으로 이렇게하는 방법은 HelperComponent를 매개 변수로 사용하여 동일한 유형의 로컬 필드를 설정하는 MyClass의 생성자를 사용하는 것입니다. 그런 다음 두 클래스를 컨테이너에 등록합니다. 그런 다음 컨테이너에서 MyClass를 해결하면 Spring은 HelperComponent를 자동으로 인스턴스화합니다. 이런 식으로 Spring은 의존성의 라이프 사이클을 관리 할 것입니다. –

답변

1

스프링에 익숙하지 않지만 IOC 컨테이너를 사용할 때는 일반적으로 응용 프로그램의 모든 종속성 (및 수명주기)을 등록한 다음 객체 상단의 '진입 점'객체를 해결합니다 그래프.

이렇게하면 생성자 및 속성 주입과 같은 IOC 컨테이너의 기능을 활용할 수 있습니다.

이와 같이 설정하면 IOC 컨테이너 구성을 통해 개별 개체 수명주기를 관리 할 수 ​​있습니다.

이 경우 HelperComponent을 IOC 컨테이너 구성에 싱글 톤으로 등록한 후 MyClass의 생성자에 HelperComponent을 삽입합니다.