2008-10-13 2 views
2

Spring의 객체 인스턴스화의 현재 상태를 보여주는 진행 막대가있는 창을 만들고 싶습니다. Spring.Net의 documentation에서 객체가 인스턴스화 될 때마다 IObjectPostProcessors이 시작하고 추적하는 올바른 지점으로 보입니다. 그러나 "인스턴스화 된 클래스의 백분율"을 얻으려면 스프링의 공장 ObjectDefinitionCount에게 구성된 객체의 수를 알아야합니다. 그러나 contextcreation이 끝날 때까지는 작동하지 않습니다 (this problem 문제가 관련있는 것 같습니다).스프링 컨텍스트의 Progressbar?

Spring을 사용하여 시작 상태를 가져올 수없는 경우 응용 프로그램을 시작할 때 사용자에게 정보를 표시하는 방법은 무엇입니까?

답변

1

완벽한 해결책은 아니지만 좋은 예상치를 제공 할 수 있습니다.

  • 생성 된 빈 수를 추적하기 위해 영구 저장소 메커니즘 (등록 정보 파일, db 등)을 사용합니다.
  • 당신은 분명히 값이 후속 실행 0
  • , 당신은 추정에 마지막 카운트를 사용에있는 초기화의 수를 될 것 초기화의 수를 처음 실행에
  • 를 업데이트 IObjectPostProcessors를 사용 끝내라.

물론 이것은 정확하지 않지만 대부분의 경우 좋은 예상치를 제공해야합니다.

+0

. 감사! – tobsen

1

스프링은 구성에서 2 단계로 읽습니다. 먼저 모든 개체 정의가 config에서 읽히고 두 번째 정의가 처리되어 필요한 경우 싱글 톤을 인스턴스화합니다.

IObjectFactoryPostProcessor를 구현하면 원하는 것을 얻을 수 있습니다. ObjectFactoryPostProcessors는 다른 것보다 먼저 인스턴스화되는 첫 번째 객체입니다. 현재 객체 정의의 수는 이미 사용 가능합니다. IObjectPostProcessor를 사용하면 인스턴스화중인 각 객체에 대한 정보를 얻을 수 있습니다.

구성이로드 될 때 이미 객체 정의의 수를 얻은 후에는 가능하지만 Spring은 단일 통과로 구성을 읽습니다. 다른 기술을 사용하여 총 개체 수를 얻어야합니다.

HTH, 에리히 나는 현재 apporach를 사용하고 있지만, 에리히 Eichinger이 어떤 제안을 살펴해야합니다

+0

IObjectFactoryPostProcessor를 지적 해 주셔서 감사합니다! – tobsen