2012-10-22 3 views
0

Spring.xml 파일이 ClassPathXmlApplicationContext을 사용하는 응용 프로그램에 여러 번 응용 프로그램에로드 된시기를 알고 싶습니다. 예를 들어 Spring.xml에 정의 된 서비스를 각 클래스에 ApplicationContext이라는 새 인스턴스를 만들어 내 클라우스에 가져 오려는 경우를 예로들 수 있습니다. 이 접근법은 이전에 생성 된 빈을 파괴하지 않고 새로운 빈을 매번 생성합니까? 이것이 메모리 문제를 일으 킵니까? 봄철 웹 사이트에서 ClassPathXmlApplicationContext API을 볼 때 나는 이것을 발견했다.이 새로 고침으로 인해 기존 bean을 파괴함으로써 기존 bean의 새로운 bean 정의가 작성된다.스프링 빈 정의 파일을 응용 프로그램에 여러 번로드하면 어떻게됩니까?

ClassPathXmlApplicationContext(String... configLocations) 
     ***Create a new ClassPathXmlApplicationContext, loading the definitions from the given XML files and automatically refreshing the context.*** 

답변

1

동일한 xml 파일을 여러 번로드 할 때 spring은 동일한 beans를 여러 번 만듭니다. 대부분의 경우 시작 시간 외에는 문제가 발생하지 않습니다. 그러나 때로는 갈등을 겪을 수 있습니다. 예를 들어, TCP 포트를 수신 대기중인 Bean이 있고 동일한 포트에 연결을 시도하는 다른 Bean을 열면 실패합니다.

+0

그래서 스프링 컨테이너를 애플리케이션에 50 번로드하면 50 개의 빈 인스턴스가 생성되어 전체 세션 시간 동안 세션에 놓이게됩니다. 응용 프로그램에서 메모리 문제가 발생합니까? – mdp

+0

정확하지 않습니다. bean의 새로운 인스턴스는 매번 생성 될 것이므로, 이전 인스턴스는 새로운 인스턴스로 대체 될 것이다. 이전 인스턴스는 가비지 수집되므로 컨텍스트 초기화 성능이 최적이되지는 않지만 중요한 메모리 문제는 없습니다. – AlexR

관련 문제