2016-12-20 7 views
4

우리 회사에서 우리는 autowired 컬렉션의 다른 서버 순서가 콩 다르다는 것을 알았지 만 동일한 머신에서 항상 동일합니다 (각 배치 후). Spring이나 어쩌면 classLoader가 동일한 bean을 정렬하는 방법은 무엇입니까? 우리의 경우 우리는 어떤 인터페이스의 2 가지 구현을 가지고있다. 그리고 그 구현은 어떤 장소에서 컬렉션으로 주입됩니다. 그리고 호스트 1에서는 항상 주입 된 콜렉션에서 A, B이고 호스트 2에서는 항상 B, A입니다.컬렉션의 봄 콩 순서. 결정 론적?

그래서 결정적이지만 다른 컴퓨터에서는 다릅니다. 아무도 그것을 확인할 수 있습니까? 그것은 무엇에 달려 있습니까? 그것에 관한 정보를 찾을 수 없습니다.

EDIT : ls -U로 정렬하지 않고 HD에 파일을 나열했으며 호스트 1 클래스가 A, B 순서이고 호스트 2에서 B, A 순서임을 알아 냈습니다. 아무도 이것이 이것이 이유임을 확인할 수 있습니까? 그래서 다른 기계에서이 순서가 다른 이유를 찾을 것입니다. (클래스가있는 .war은 동일하고 넥서스 저장소에서 직접 다운로드했습니다.)

+0

동일한 질문을 다시하지 말고 기존 게시물에 현상금을 넣는 것을 고려하십시오. –

답변

-1

즉, 스프링 빈 인스턴스화의 기본 순서를 알고 싶습니다.

종속성 분석, 명시 적 종속성 구성 (@DependsOn) 등과 같은 빈 인스턴스화와 관련된 많은 알고리즘이 있습니다. Bean이 어떤 if ...에 속하지 않을 때 기본 인스턴스화 시퀀스가됩니다. 그래서 아무도 우리가 컨피규레이션을 통해 빈 인스턴스화 순서를 내포 할 수 있다고하더라도 bean 인스턴스화의 기본 순서를 보장하지 않습니다.

스프링 빈 인스턴스화의 기본 순서에 대한 문서가 명확하게 나와 있지 않으므로. 나는 그것이 임의적이라고 생각한다. 만약 당신이 패턴을 이해할 수 있다면, 그 패턴에 따라 어떤 논리적 인 구현도하지 않을 것이다. 보장되지 않기 때문이다.

+0

이것은 기존 코드입니다. 나는 그 명령에 근거한 것을 구현하지 않을 것이다. 나는 그것이 어떻게 작동하는지 알고 싶다. – xianoss

+0

"어떻게 작동하는지"내게 의미는 "스프링 빈 인스턴스화의 기본 순서"이며 대답에서 설명했습니다. – Avinash

+0

"기본 인스턴스 생성 순서"는이 두 빈을 자동 스캔으로 인스턴스화하고 다른 빈은 없습니다. 그들에 대한 참조? 이 autowired 컬렉션은 하나의 참조 만 있습니다. – xianoss