2010-04-16 8 views
2

스프링 컨테이너가 실행 중이고 스프링 컨테이너 안에 만들어진 콩에 액세스 할 수있는 클래스가 있습니다. 내가 가지고있는 클래스는 스프링 컨테이너에 등록되어 있지 않습니다.스프링 컨테이너에 액세스하려면 어떻게해야합니까?

내가 할 수있는 한 가지 방법은 MethodInvoker를 사용하여 정적 메서드를 호출 할 수 있다는 것이므로 정적 필드 (스프링 컨테이너의 bean이 될 것임)에 액세스 할 수 있습니다.

웹이 아닌 응용 프로그램의 경우 WebapplicationContextUtils와 같은 클래스가 있습니까?

답변

2
+0

+1,하지만 라이브러리의 최신 버전에 대한 링크를 제공하시기 바랍니다. – Bozho

+0

죄송합니다. 나는 이것이 이전 버전이라는 것을 알지 못했다. 최신 내용은 다음과 같습니다. http://static.springsource.org/spring/docs/3.0.x/javadoc-api/org/springframework/context/ApplicationContextAware.html –

+0

실제로이 작업을 수행 할 수 없습니다. 내가 말하는 콩은 Spring 컨테이너에 등록되어 있지 않기 때문에. 정적 메서드를 사용하여 스프링 컨테이너에 액세스 할 수있는 factory 클래스를 사용하기를 고대하고 있습니다. – Antony

0

왜 당신이 그 객체의 인스턴스를 잡아 봄 IOC 컨테이너의 외부 개체를하실 수 있습니다 Spring 관리 빈에서 정적의 getInstance() 메소드를 제공하지 않는 구현할 수있다? Spring 관리 객체가 싱글 톤일 가능성이 높으므로 잘 작동합니다. 예를 들어

:

public class MyObj { 

    private static instance = null; 

    public MyObj() { 
    instance = this; 
    } 

    public static MyObj getInstance() { 
    return instance; 
    } 

} 

public class OutsideSpringObj { 

    public doSomething() { 
    MyObj springManagedObj = MyObj.getInstance(); 
    if (springManagedObj != null) { 
     // do something with spring-managed object 
    } 
    } 
} 
관련 문제