<property/>나 <constructor-arg/> 요소 안의 <bean/> 요소는 내부 bean을 정의한다. 다음 예시를 참고하라.
<bean id="outer" class="...">
<!-- 대상 bean에 대한 참조를 하는 대신, 대상 bean을 간단히 inline으로 정의한다 -->
<property name="target">
<bean class="com.example.Person"> <!-- 이것이 내부 bean이다 -->
<property name="name" value="Fiona Apple" />
<property name="age" value="25" />
</bean>
</property>
</bean>
내부 bean 정의는 ID나 name의 정의를 필요로 하지 않는다. 설정이 되더라도 컨테이너가 그 값들을 식별자로 사용하지 않는다. 컨테이너는 생성에 있어서 scope 플래그 또한 무시한다. 왜냐하면 내부 bean들은 항상 익명이며 외부 bean과 함께 생성되기 때문이다. 내부 bean에 독립적으로 접근하는 것은 불가능하며, 자신을 감싸는 bean이 아닌 협력자 bean들에게 내부 bean을 주입하는 것 또한 불가능하다.
예외적으로 커스텀한 scope로부터 소멸 콜백을 받는 것은 가능하다. 예를 들어, 요청 scope인 내부 bean이 싱글턴 bean 안에 포함되어 있다고 치자. 내부 bean 인스턴스의 생성은 그것을 포함하고 있는 bean의 생성에 묶여있다. 하지만 소멸 콜백은 요청 scope의 라이프사이클에 내부 bean을 참여하게 한다. 흔한 경우는 아니다. 전형적으로, 내부 bean은 자신을 포함하는 bean의 스코프를 따른다.
'SpringFramework Core - I. IoC 컨테이너 > 4. 의존성' 카테고리의 다른 글
4.2.6. Collection 합치기 (0) | 2020.03.17 |
---|---|
4.2.5. Collections (0) | 2020.03.17 |
4.2.3. 다른 bean들(협력자들)에 대한 참조 (0) | 2020.03.17 |
4.2.2. idref 요소 (0) | 2020.03.16 |
4.2.1. Straight Values (원시 타입, String 등등) (0) | 2020.03.16 |