-
[Spring Core] 공식문서 공부 - 1.2.1 Configuration MetadataJAVA/Spring 2022. 8. 21. 14:06
https://docs.spring.io/spring-framework/docs/current/reference/html/core.html#spring-core
Core Technologies
In the preceding scenario, using @Autowired works well and provides the desired modularity, but determining exactly where the autowired bean definitions are declared is still somewhat ambiguous. For example, as a developer looking at ServiceConfig, how do
docs.spring.io
바로 이전 글의 다이어그램에서 Spring IoC 컨테이너가 구성 메타데이터(configuration metadata)를 필요로 한다는 것을 확인하였다.
이번 글에서는 이 구성 메타데이터(configuration metadata)에 대해 알아본다.
구성 메타데이터(configuration metadata)란?
Spring IoC 컨테이너에게 어플리케이션에 필요한 객체들의 인스턴스화 및 관리를 위한 정보를 제공한다.
XML, 자바 어노테이션, 자바 코드 형태로 작성할 수 있으며, 이중에서 XML 형태로 작성하는것이 전통적이다.
최근에는 Java-Based configuration 형태(Spring 3.0+)로 작성하는 경우도 많다고 한다.Spring에서 configuration은 최소한 한개 이상의 컨테이너가 관리해야하는 Bean 정의를 포함해야한다.
XML 기반으로 작성시에는 아래와 같이 <Beans/> 요소내에 <Bean/> 요소를 배치하는 방식으로 구성 메타데이터를 작성한다.
<beans> <bean id="..." class="..."></bean> # Bean 정의 (configuration내에 최소한 한개 이상 포함) <bean id="..." class="..."></bean> <bean id="..." class="..."></bean> ... </beans>여기에서 Bean 정의가 각각 실제 어플리케이션을 구성하는 객체와 대응된다.
만약에 Spring IoC 컨테이너의 제어를 벗어난 상태에서 생성되는 객체를 configuration내에 포함하고 싶다면,
AspectJ를 이용하면 된다. 이는 챕터 5에서 다루므로 PASS.
다음으로, 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 https://www.springframework.org/schema/beans/spring-beans.xsd"> <bean id="..." class="..."> <!-- 해당 bean에 대한 협력자(collaborators) 및 구성(configuraion)을 작성하는 곳 --> </bean> <bean id="..." class="..."> <!-- 해당 bean에 대한 협력자(collaborators) 및 구성(configuraion)을 작성하는 곳 --> </bean> <!-- 더 많은 bean들의 정의는 이곳에 --> </beans>여기서 <bean> 태그 내에 속성들(attributes)을 자세히 보면,
<bean id="..." class="...">id 속성과 class 속성 총 2가지 속성을 가지고 있는 것을 알 수 있다. 이 2가지 속성에 들어가는 값들을 아래에 설명하겠다.
- id: 서로 다른 bean들을 구분하는 고유 문자열. 협력 객체ⓐ(collaborating object)를 나타낸다.
- class: bean의 타입을 정의한다. 보통 패키지 경로를 포함한 해당 클래스 전체 경로를 넣는다.(fully qualified classname)
ⓐ 협력 객체(collaborating object): Dependencies(의존성) 챕터에서 다루므로 그냥 넘어간다.
'JAVA > Spring' 카테고리의 다른 글
[Spring Core] 공식문서 공부 - 1.2.3 Using the Container (0) 2022.08.21 [Spring Core] 공식문서 공부 - 1.2.2 Instantiating a Container (0) 2022.08.21 [Spring Core] 공식문서 공부 - 1.2 Container Overview (1) 2022.08.21 [Spring Core] 공식문서 공부 - 1.1 Introduction to the spring IoC Container and Beans (0) 2022.08.20 [Spring Core] 공식문서 공부 - 1. The IoC Container (0) 2022.08.20