맛동산

Simple Spring Maven에서 스프링 컨테이너 사용-2 본문

Web/Spring

Simple Spring Maven에서 스프링 컨테이너 사용-2

오지고지리고알파고포켓몬고 2017. 3. 12. 22:43

applicationContext.xml에서

 
<?xml version="1.0" encoding="UTF-8"?>
<!-- 여그가 빈 팩토리 -->
<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 http://www.springframework.org/schema/beans/spring-beans.xsd">

	<!-- spring.di.ch01 -->
	<bean id="message" class="spring.di.ch01.MessageKr"/> 
	
	
	<!-- spring.di.ch02 -->
	<!-- <bean id="serviceImpl" class="spring.di.ch02.ServiceImpl"/> -->
	<!-- 생성자가 있는데 주소를 주입하는 부분이 없어서 에러 -->
	
	<bean id="serviceImpl" class="spring.di.ch02.ServiceImpl">
		<!-- 생성자 이용 DI -->
		<constructor-arg><!-- <constructor-arg ref="daoImpl"/> 도 가능 -->
			<ref bean="daoImpl"/>
		</constructor-arg>
	</bean>
	<bean id="daoImpl" class="spring.di.ch02.DaoImpl"/>
	
	
	<!-- spring.di.ch03 -->
	<bean id="serviceImpl2" class="spring.di.ch03.ServiceImpl">
		<!-- 설정메서드 이용 DI : name="매개변수" ref="참조빈id" -->
		<property name="daoImpl" ref="daoImpl2"/> <!-- name = 매개변수의 이름 -->
	</bean>
	<bean id="daoImpl2" class="spring.di.ch03.DaoImpl"/>
	
	
	<!-- spring.di.ch04 -->
	<!-- <bean id="moniter" class="spring.di.ch04.SystemMoniter">
		설정메서드 이용 DI : name="매개변수" ref="참조빈id"
		변수 주입
		<property name="time" value="10"/>
		
		외부객체 주입
		<property name="smsSender" ref="smssender"/>
	</bean> -->
	<!-- 형식p:변수="값" p:변수-ref="참조빈id" -->
	<bean id="moniter" class="spring.di.ch04.SystemMoniter"
		p:time="10" p:smsSender-ref="smssender"/>
	<bean id="smssender" class="spring.di.ch04.SmsSender"/>
	
	<!-- spring.di.ch05 -->
	<bean id="moniter2" class="spring.di.ch05.SystemMoniter">
		<constructor-arg value="30"/><!-- 첫번째 파라미터 -->
		<constructor-arg ref="smssender2"/><!-- 두번째 파라미터 -->
	</bean>
	<bean id="smssender2" class="spring.di.ch05.SmsSender"/>
	
	<!-- spring.di.ch06 -->
	<bean id="list" class="spring.di.ch06.ListCollection">
		<property name="userName">
			<!-- list 원소 추가 -->
			<list>
				<value>홍길동</value>
				<value>길순신</value>
				<value>신감찬</value>
				<value>유관순</value>
			</list>
		</property>
	</bean>
	
	<!-- spring.di.ch07 -->
	<bean id="map" class="spring.di.ch07.MapCollection">
		<property name="map">
			<map key-type="java.lang.String"
				value-type="java.lang.Object">
				<entry key="홍길동" value="80"/>
				<entry key="이순신" value="90"/>
				<entry key="유관순" value="85"/>
			</map>
		</property>
	</bean>
</beans>


1. 더미 생성자아닐 경우 bean을 생성할 때 주입 시켜줘야함.

<bean id="serviceImpl" class="spring.di.ch02.ServiceImpl">

<!-- 생성자 이용 DI -->

<constructor-arg><!-- <constructor-arg ref="daoImpl"/> 도 가능 -->

<ref bean="daoImpl"/>

</constructor-arg>

</bean>


2. Setter()을 작성해두면 property 속성을 이용하여 세팅해줄 수 있음.

<bean id="serviceImpl2" class="spring.di.ch03.ServiceImpl">

<!-- 설정메서드 이용 DI : name="매개변수" ref="참조빈id" -->

<property name="daoImpl" ref="daoImpl2"/> <!-- name = 매개변수의 이름 -->

</bean>


3. p태그(?) 를 사용하여 세팅해줄 수 있음(이때도 setter메서드는 있어야하는듯)

<bean id="moniter" class="spring.di.ch04.SystemMoniter" p:time="10" p:smsSender-ref="smssender"/>


4. 생성자에 파라미터가 여러개 일 경우

<bean id="moniter2" class="spring.di.ch05.SystemMoniter">

<constructor-arg value="30"/><!-- 첫번째 파라미터 -->

<constructor-arg ref="smssender2"/><!-- 두번째 파라미터 -->

</bean>


5. List 객체에 값을 넣을 경우 - List<string> userName일 때 setUserName(List<String> userName){...}

<bean id="list" class="spring.di.ch06.ListCollection">

<property name="userName">

<!-- list 원소 추가 -->

<list>

<value>홍길동</value>

<value>길순신</value>

<value>신감찬</value>

<value>유관순</value>

</list>

</property>

</bean>

(만약 List<Class>라면 ref로 주입하면 되는걸까?)


6. Map 객체 넣을 경우 - Map<String, Object> map일 때 setMap(Map<String, Object> map){...}

<bean id="map" class="spring.di.ch07.MapCollection">

<property name="map">

<map key-type="java.lang.String"

value-type="java.lang.Object">

<entry key="홍길동" value="80"/>

<entry key="이순신" value="90"/>

<entry key="유관순" value="85"/>

</map>

</property>

</bean>

Comments