티스토리 뷰
지난 포스팅에서도 한번 언급했듯, constructor-arg 태그를 이용하여 bean 객체에 인자를 전달할 수 있다.
1. value 속성: bean 객체에 다른 bean 객체가 아닌 다른 자료형의 데이터를 전달할 때 사용하는 속성
2. ref 속성: bean 객체에 다른 bean 객체 자체를 전달할 때 사용하는 속성
3. index 속성: constructor-arg로 인자를 전달할 때, 그 순서를 명시하여 사용할 수 있게 해주는 속성
이번에도 그리 어려운 개념은 아니기 때문에 자세한 설명은 생략하겠다.
◎SonySpeaker.java
package polymorphism;
public class SonySpeaker {
public SonySpeaker() {
System.out.println("==> SonySpeaker 객체 생성");
}
public void volumeUp() {
System.out.println("SonySpeaker --- 볼륨 켜기");
}
public void volumeDown() {
System.out.println("SonySpeaker --- 볼륨 줄이기");
}
}
◎SamsungTV.java
package polymorphism;
public class SamsungTV implements TV{
SonySpeaker speaker = null;
int price = 0;
public SamsungTV(SonySpeaker speaker, int price){
System.out.println("SonySpeaker --- 객체 생성");
this.speaker = speaker;
this.price = price;
}
public SamsungTV() {
System.out.println("SamsungTV --- 객체 생성");
}
@Override
public void powerOn() {
System.out.println("SamsungTV --- 전원 켜기");
}
@Override
public void powerOff() {
System.out.println("SamsungTV --- 전원 끄기");
}
@Override
public void volumeUp() {
speaker.volumeUp();
System.out.println(this.price);
}
@Override
public void volumeDown() {
speaker.volumeDown();
}
}
◎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"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id = "tv" class = "polymorphism.SamsungTV">
<constructor-arg ref = "sony"></constructor-arg>
<constructor-arg value = "1000"></constructor-arg>
</bean>
<bean id = "sony" class = "polymorphism.SonySpeaker"></bean>
</beans>
◎Main
package polymorphism;
import org.springframework.context.support.AbstractApplicationContext;
import org.springframework.context.support.GenericXmlApplicationContext;
public class TVuser {
public static void main(String[] args) {
// 1. Spring Container 구동
AbstractApplicationContext factory = new GenericXmlApplicationContext("applicationContext.xml");
// 2. Spring Container 로부터 필요한 bean객체를 요청
TV tv = (TV)factory.getBean("tv");
tv.powerOn();
tv.powerOff();
tv.volumeDown();
tv.volumeUp();
// 3. Spring Container 종료
factory.close();
}
}
constructor-arg 태그는 작성한 순서대로 인자가 전달되지만, index 속성을 사용하면, 그 순번을 정해줄 수 있다.
◎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"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id = "tv" class = "polymorphism.SamsungTV">
<constructor-arg index = "1" value = "1000"></constructor-arg>
<constructor-arg index = "0" ref = "sony"></constructor-arg>
</bean>
<bean id = "sony" class = "polymorphism.SonySpeaker"></bean>
</beans>
결과는 동일하다.
반응형
'[JAVA] > Spring' 카테고리의 다른 글
[Spring] bean 5: Namespace를 이용한 DI (0) | 2021.06.15 |
---|---|
[Spring] bean 4: property를 이용한 setter DI (0) | 2021.06.15 |
[Spring] bean 2: 로드 관련 속성 (0) | 2021.06.15 |
[Spring] bean 1: 결합도와 bean 객체 (0) | 2021.06.15 |
[Spring] STS: Servlet 자동 등록 (0) | 2021.06.15 |
Comments
최근에 올라온 글
최근에 달린 댓글
TAG
- redux-thunk
- javascript
- 파니노구스토
- AsyncStorage
- await
- 인천 구월동 이탈리안 맛집
- 정보보안기사 #실기 #정리
- Promise
- react
- 이탈리안 레스토랑
- 인천 구월동 맛집
- react-native
- 맛집
- Async
- redux
- Total
- Today
- Yesterday