<property/> 요소의 'value' 속성은 사람이 읽을 수 있는 문자열 형태로 프로퍼티나 생성자 인자를 특정한다. 스프링의 변환 서비스는 이러한 값들을 String에서 프로퍼티나 인자의 실제 타입으로 변환해주는 데 사용된다. 다음 예시는 다양한 값들이 세팅되어 있는 것을 보여준다.
<bean id="myDataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<!-- setDriverClassName(String) 호출의 결과들 -->
<property name="driverClassName" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/mydb" />
<property name="username" value="root" />
<property name="password" value="masterkaoli" />
</bean>
다음 예시는 더 풍부한 XML 설정을 위해 p-namespace를 사용한다.
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans
https://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="myDataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"
p:driverClassName="com.mysql.jdbc.Driver"
p:url="jdbc:mysql://localhost:3306/mydb"
p:username="root"
p:password="masterkaoli" />
</beans>
위의 XML은 더 간결하다. 하지만 bean 정의를 생성할때 자동으로 프로퍼티를 완성시켜주는 IDE를 사용하지 않는 한, 오타는 설계 시점이 아닌 런타임에 밝혀진다. 그런 IDE들의 도움은 매우 유용하다.
다음과 같이 'java.util.Properties' 인스턴스를 설정할 수도 있다.
<bean id="mappings" class="org.springframework.context.support.PropertySourcePlaceholderConfigurer">
<!-- java.util.Properties로 타입화 -->
<property name="properties">
<value>
jdbc.driver.className=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/mydb
</value>
</property>
</bean>
스프링 컨테이너는 자바빈의 PropertyEditor 메커니즘을 사용하여 <value/> 요소 안의 텍스트를 java.util.Properties 인스턴스로 변환한다. 이것은 훌륭한 지름길이며, 스프링 제작진이 수많은 value 속성 스타일들 중에서 사용하기를 선호하는 몇 안되는 <value/> 요소이기도 하다.
'SpringFramework Core - I. IoC 컨테이너 > 4. 의존성' 카테고리의 다른 글
4.2.3. 다른 bean들(협력자들)에 대한 참조 (0) | 2020.03.17 |
---|---|
4.2.2. idref 요소 (0) | 2020.03.16 |
4.2. 의존성과 설정에 대한 상세 (0) | 2020.03.16 |
4.1.4. 의존성 주입의 예시 (0) | 2020.03.16 |
4.1.3. 의존성 주입 프로세스 (0) | 2020.03.16 |