3.2.1. The container

사용자 삽입 이미지3.2.1.1. Configuration metadata

Spring IoC Container가 어떻게 bean을 만들고, 설정하고, 엮을지 적어 놓은 것으로 주로 XML을 사용하지만 XML이 유일한 방법은 아닙니다.

XML 기반의 Configuration metadata 예.

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">
  <bean id="..." class="...">
    <!-- collaborators and configuration for this bean go here -->
  </bean>
  <bean id="..." class="...">
    <!-- collaborators and configuration for this bean go here -->
  </bean>
  <!-- more bean definitions go here... -->
</beans>

Configuration Metadata 이해

3.2.2. Instantiating a container

Container를 생성하는 방법은 쉽습니다.

Resource resource = new FileSystemResource("beans.xml");
BeanFactory factory = new XmlBeanFactory(resource);

요래..

ClassPathResource resource = new ClassPathResource("beans.xml");
BeanFactory factory = new XmlBeanFactory(resource);

요래..

ApplicationContext context = new ClassPathXmlApplicationContext(
        new String[] {"applicationContext.xml", "applicationContext-part2.xml"});
// of course, an ApplicationContext is just a BeanFactory
BeanFactory factory = (BeanFactory) context;

할 수 있습니다. 마지막 꺼는 xml 설정 파일 두 개를 Container에 불러 왔네요.

FileSystemResource vs ClassPathResource (2)
id, name and BeanDefinitionName

3.2.2.1. Composing XML-based configuration metadata

설정을 여러 개의 파일로 나눠 둘 수 있고 당연히 여러 개의 설정 파일을 위에 나온 방식 처럼 Container를 만들 때 사용할 수 있습니다. 그러나 위에 처럼 설정 파일 명을 프로그램 파일 내부에 표기 하는 것 보다는 xml 안에 숨겨 두는 것이 좋습니다. <import /> 를 사용하여 설정 파일을 지정할 수 있습니다.

<beans>

    <import resource="services.xml"/>
    <import resource="resources/messageSource.xml"/>
    <import resource="/resources/themeSource.xml"/>

    <bean id="bean1" class="..."/>
    <bean id="bean2" class="..."/>

</beans>

3.2.3. The beans

bean 설정 데이타는 BeanDefinition이라는 객체로 표현됩니다.

3.2.3.1. Naming beans

모든 bean들은 하나 이상의 id를 가집니다. 이런 id들은 유일해야 하며 하나 이상의 id를 가지는 bean의 경우 하나를 제외한 나머지는 별칭으로 취급 됩니다. <bean /> 태그의 id와 name속성을 사용하여 지정할 수 있습니다.

빈(bean)의 이름 지정
Spring의 naming/aliasing 정책에 대한 수사 (상)
Spring의 naming/aliasing 정책에 대한 수사 (중)
Spring의 naming/aliasing 정책에 대한 수사 (하)

이쪽은 뭔가 좀더 자세히 봐야 겠습니다.

Aliasing Beans (4)
복잡한 Alias
Bean 생성하기

3.2.4. Using the container

BeanFactory를 사용하는 방법입니다.

InputStream is = new FileInputStream("beans.xml");
BeanFactory factory = new XmlBeanFactory(is);

위 코드는 맨 위에 있는 그림 중에 빡스와 설정 파일 부분에 해당하며..

application에서는 BeanFactory에 있는 메소드들을 호출하여 사용하면 됩니다.