본문 바로가기

SpringFramework Core - I. IoC 컨테이너

(101)
4.2.7. Collection Merging의 한계 원문: https://docs.spring.io/spring-framework/docs/current/spring-framework-reference/core.html#beans-collection-merge-limitations Map과 List처럼, 다른 타입의 컬렉션은 합칠 수 없다. 만약 시도하면 예외가 발생할 것이다. merge 속성은 반드시 더 낮은 계층의 정의, 상속받은 정의, 더 자식인 정의들에서 이루어져야 한다. 부모 컬렉션 정의에 merge 속성을 설정하는 것은 불필요하며 바람직한 결과를 얻지 못하게 한다.
4.2.6. Collection 합치기 원문: https://docs.spring.io/spring-framework/docs/current/spring-framework-reference/core.html#beans-collection-elements-merging 스프링 컨테이너는 컬렉션을 합치는 기능도 제공한다. 애플리케이션 개발자는 부모 ,,,요소를 정의하고 자식 ,,,요소를 통해 부모 컬렉션의 값들을 상속하고 오버라이드 할 수 있다. 즉, 자식 컬렉션 요소들이 부모 컬렉션의 특정된 값들을 오버라이딩하고 있다면, 자식 컬렉션의 값들은 부모 컬렉션의 요소들과 자식 컬렉션의 요소들을 합한 결과와 같다. 이 merging 주제에서는 부모-자식 bean 메커니즘에 대해 논의한다. 부모와 자식 bean 정의에 대해 익숙치 않은 독자들은 관련된 ..
4.2.5. Collections 원문: https://docs.spring.io/spring-framework/docs/current/spring-framework-reference/core.html#beans-collection-elements , , , 요소들은 자바 컬렉션 타입인 List, Set, Map, Properties에 대응하여 프로퍼티와 인자들을 세팅한다. 다음 예시를 통해 사용법을 알아보자. administrator@example.org support@example.org development@example.org 참조를 따라 넘어오는 list 요소 어떤 문자열 맵의 키, 값의 value 또는 set의 value는 다음 요소들 중 하나일 수 있다. bean | ref | idref | list | set | map |..
4.2.4. 내부 bean들 원문: https://docs.spring.io/spring-framework/docs/current/spring-framework-reference/core.html#beans-inner-beans 나 요소 안의 요소는 내부 bean을 정의한다. 다음 예시를 참고하라. 내부 bean 정의는 ID나 name의 정의를 필요로 하지 않는다. 설정이 되더라도 컨테이너가 그 값들을 식별자로 사용하지 않는다. 컨테이너는 생성에 있어서 scope 플래그 또한 무시한다. 왜냐하면 내부 bean들은 항상 익명이며 외부 bean과 함께 생성되기 때문이다. 내부 bean에 독립적으로 접근하는 것은 불가능하며, 자신을 감싸는 bean이 아닌 협력자 bean들에게 내부 bean을 주입하는 것 또한 불가능하다. 예외적으로 커스..
4.2.3. 다른 bean들(협력자들)에 대한 참조 원문: https://docs.spring.io/spring-framework/docs/current/spring-framework-reference/core.html#beans-ref-element 'ref' 요소는 와 내에서의 가장 마지막 요소다. 여기서 컨테이너의 관리를 받고 있는 다른 bean에 대한 참조 프로퍼티를 설정할 수 있다. 프로퍼티로 세팅하는 bean에게 참조된 bean은 의존성이 된다. 그리고 참조된 bean은 프로퍼티로 세팅되기 전에 의무적으로 초기화되어야 한다(만약 협력자가 싱글턴 bean이면 이미 컨테이너에 의해 초기화되어 있다). 모든 참조들은 궁극적으로 다른 객체에 대한 참조이다. bean이나 parent 속성을 통해 다른 객체의 ID나 이름을 특정했는가에 따라 Scoping..
4.2.2. idref 요소 원문: https://docs.spring.io/spring-framework/docs/current/spring-framework-reference/core.html#beans-idref-element idref 요소는 다른 bean의 id를 나 요소로 에러 없이 전달할 수 있게 해주는 간단한 방법이다. 다음 예시는 그 사용법을 보여준다. 위의 bean 정의 부분은 다음의 예시의 bean 정의 부분과 (런타임 동안에는) 정확히 동일하다. 전자의 방식이 후자의 방식보다 더 낫다. 왜냐하면 idref 태그를 사용하는 것은 컨테이너로 하여금 배포 시점에, 참조된 bean이 실제로 존재하는지 유효성을 검사하게 만들기 때문이다. 후자에서는, 클라이언트 bean의 프로퍼티인 targetName에 값이 전달될 때에..
4.2.1. Straight Values (원시 타입, String 등등) 원문: https://docs.spring.io/spring-framework/docs/current/spring-framework-reference/core.html#beans-value-element 요소의 'value' 속성은 사람이 읽을 수 있는 문자열 형태로 프로퍼티나 생성자 인자를 특정한다. 스프링의 변환 서비스는 이러한 값들을 String에서 프로퍼티나 인자의 실제 타입으로 변환해주는 데 사용된다. 다음 예시는 다양한 값들이 세팅되어 있는 것을 보여준다. 다음 예시는 더 풍부한 XML 설정을 위해 p-namespace를 사용한다. 위의 XML은 더 간결하다. 하지만 bean 정의를 생성할때 자동으로 프로퍼티를 완성시켜주는 IDE를 사용하지 않는 한, 오타는 설계 시점이 아닌 런타임에 밝혀진다..
4.2. 의존성과 설정에 대한 상세 원문: https://docs.spring.io/spring-framework/docs/current/spring-framework-reference/core.html#beans-factory-properties-detailed 이전 파트에서 언급했듯이, bean 프로퍼티와 생성자 인자들을 정의함으로써 값들을 inline으로 정의하거나 다른 bean들을 참조하게 할 수 있다. 이를 위해 스프링의 XML 기반의 설정 메타데이터는 와 요소 속에서 sub-element 타입을 제공한다.