1. ๊ธฐ๋ณธ
์คํ๋ง ์ปจํ ์ด๋๋ XML ์ค์ ํ์ผ์ ๋ฑ๋ก๋ ํด๋์ค๋ฅผ ์ฐพ์์ ๊ฐ์ฒด ์์ฑํ ๋ ๊ธฐ๋ณธ์ ์ผ๋ก ๋งค๊ฐ๋ณ์๊ฐ ์๋ ๊ธฐ๋ณธ ์์ฑ์๋ฅผ ํธ์ถํ๋ค.
๋งค๊ฐ๋ณ์๋ฅผ ๊ฐ์ง๋ ์์ฑ์๋ ๋ฐ๋ก ์์ฑ์ ์ธ์ ์ (Constructor Injection)์ ์ฌ์ฉํ์ฌ ์ฒ๋ฆฌํ๋ค.
public class SamsungTV {
private SonySpeaker speaker;
private int price;
public SamsungTV(){ }
public SamsungTV(SonySpeaker speaker){
this.speaker = speaker;
}
public SamsungTV(SonySpeaker speaker, int price){
this.speaker = speaker;
this.price = price;
}
}
<bean id="tv" class="polymorphism.SamsungTV"> <!-- ์์ฑ ์ -->
<constructor-arg ref="sony"></constructor-arg> <!-- ์ธ์๊ฐ id๊ฐ sony์ธ ์ ์ผ -->
</bean>
<bean id="sony" class="polymorphism.SonySpeaker"></bean> <!-- ๋จผ์ ์์ฑ๋์ด์ผํจ -->
-
์คํ๋ง ์ปจํ ์ด๋๋ ๊ธฐ๋ณธ์ ์ผ๋ก bean ๋ฑ๋ก๋ ์์๋๋ก ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ฉฐ, ๋ชจ๋ ๊ฐ์ฒด๋ ๊ธฐ๋ณธ ์์ฑ์ ํธ์ถ์ ์์น์ผ๋ก ํ๋ค.
-
๊ทธ๋ฐ๋ฐ ์ด ์ฝ๋๋ฅผ ํตํด ์์ฑ์ ์ธ์ ์ ์ผ๋ก ์์กด์ฑ ์ฃผ์ ๋ SonySpeaker๊ฐ ๋จผ์ ์์ฑ๋์์ผ๋ฉฐ, SonySpeaker ๊ฐ์ฒด๋ฅผ ๋งค๊ฐ๋ณ์๋ก ๋ฐ์๋ค์ด๋ ์์ฑ์๋ฅผ ํธ์ถํ์ฌ ๊ฐ์ฒด๋ฅผ ์์ฑํ์์ ์ ์ ์๋ค.
2. ๋ค์ค ๋ณ์ ๋งคํ
์ด๊ธฐํํด์ผ ํ ๋ฉค๋ฒ๋ณ์๊ฐ ์ฌ๋ฌ ๊ฐ์ด๋ฉด <constructor-arg> ์๋ฆฌ๋จผํธ๋ฅผ ๋งค๊ฐ๋ณ์์ ๊ฐ์๋งํผ ์ถ๊ฐํ๋ฉด ๋๋ค.
<bean id="tv" class="polymorphism.SamsungTV">
<constructor-arg ref="sony"></constructor-arg>
<constructor-arg value="2700000"></constructor-arg>
</bean>
<bean id="sony" class="polymorphism.SonySpeaker"></bean>
-
value ์์ฑ: ์ ๋ฌํ ๋ฐ์ดํฐ๊ฐ ๊ณ ์ ๋ ๋ฌธ์์ด์ด๋ ์ ์ ๊ฐ์ ๊ธฐ๋ณธํ ๋ฐ์ดํฐ
-
ref ์์ฑ: ์ ๋ฌํ ๋ฐ์ดํฐ๊ฐ ๋น์ผ๋ก ๋ฑ๋ก๋ ๋ค๋ฅธ ๊ฐ์ฒด
index ์์ฑ์ ์ด์ฉํ๋ฉด ์ด๋ค ๊ฐ์ด ๋ช ๋ฒ์งธ ๋งค๊ฐ๋ณ์๋ก ๋งคํํ ์ง ์ง์ ํ ์ ์๋ค. 0๋ถํฐ ์์ํ๋ค.
<bean id="tv" class="polymorphism.SamsungTV">
<constructor-arg index="0" ref="sony"></constructor-arg>
<constructor-arg index="1" value="2700000"></constructor-arg>
</bean>
<bean id="sony" class="polymorphism.SonySpeaker"></bean>
3. ์์กด ๊ด๊ณ ๋ณ๊ฒฝ
<bean id="tv" class="polymorphism.SamsungTV"> <!-- ์ฌ๊ธฐ์ ํฐ๋น ์ข
๋ฅ๋ฅผ! -->
<constructor-arg ref="sony"></constructor-arg> <!-- ์ฌ๊ธฐ์ ์คํผ์ปค ์ข
๋ฅ๋ฅผ! -->
<constructor-arg value="2700000"></constructor-arg>
</bean>
<bean id="sony" class="polymorphism.SonySpeaker"></bean>
<bean id="apple" class="polymorphism.AppleSpeaker"></bean>
์ด๋ค ์๋ฐ ์ฝ๋๋ ๋ณ๊ฒฝํ์ง ์๊ณ ! ์คํ๋ง ์ค์ ํ์ผ๋ง์ผ๋ก TV ์ข ๋ฅ๋ฅผ ๋ณ๊ฒฝํ ์ ์๊ณ ์คํผ์ปค์ ์ข ๋ฅ๋ฅผ ๋ณ๊ฒฝํ ์ ์๋ค.
'Spring > Spring Quick Start' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
@Component ์ฌ์ฉ๋ฒ (0) | 2020.12.29 |
---|---|
์ปฌ๋ ์ ๊ฐ์ฒด ์ค์ ์ข ๋ฅ (0) | 2020.12.29 |
Setter ์ธ์ ์ ์ด์ฉํ๊ธฐ (p ๋ค์์คํ์ด์ค) (0) | 2020.12.29 |
์คํ๋ง ์์กด์ฑ ๊ด๋ฆฌ ๋ฐฉ๋ฒ (0) | 2020.12.29 |
์คํ๋ง XML ์ค์ ํ์ผ์ <import>, <bean> ์๋ฆฌ๋จผํธ (0) | 2020.12.29 |
์คํ๋ง ์ปจํ ์ด๋์ ์ข ๋ฅ (0) | 2020.12.29 |