LgTV.java
package org.joonzis.DI_3;
public class LgTV implements TV{
public LgTV() {
System.out.println("--> LgTV 객체 생성");
}
@Override
public void powerOn() {
System.out.println("--> LgTV 전원 켠다");
}
@Override
public void powerOff() {
System.out.println("--> LgTV 전원 끈다");
}
@Override
public void volumeUp() {
System.out.println("--> LgTV 소리 올린다");
}
@Override
public void volumeDown() {
System.out.println("--> LgTV 소리 내린다");
}
}
SamsungTV.java
package org.joonzis.DI_3;
public class SamsungTV implements TV {
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() {
System.out.println("--> SamsungTV 소리 올린다");
}
@Override
public void volumeDown() {
System.out.println("--> SamsungTV 소리 내린다");
}
}
TV.java
package org.joonzis.DI_3;
public interface TV {
public void powerOn();
public void powerOff();
public void volumeUp();
public void volumeDown();
}
TVUser.java
package org.joonzis.DI_3;
import org.springframework.context.support.AbstractApplicationContext;
import org.springframework.context.support.GenericXmlApplicationContext;
public class TVUser {
public static void main(String[] args) {
// 1. Spring 컨테이너 구동
AbstractApplicationContext ctx =
new GenericXmlApplicationContext("applicationContext3.xml");
// 2. Spring 컨테이너로부터 필요한 객체 요청
// 컨테이너에서 객체 먼저 생성하고 자바 코드에서 사용해서
// 코드 실행 시 ~~ 객체 생성이 제일 먼저 출력
TV ltv = (LgTV)ctx.getBean("ltv");
ltv.powerOn();
ltv.volumeUp();
ltv.volumeDown();
ltv.powerOff();
System.out.println("------------------------");
TV stv = (SamsungTV)ctx.getBean("stv");
stv.powerOn();
stv.volumeUp();
stv.volumeDown();
stv.powerOff();
}
}
applicationContext3.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:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd">
<!--
해당 xml 파일 생성 방법
1. Spring Bean Configuration File
2. 하단 탭 중 Namespaces에서 Context 체크 -> 상단 Beans 태그에 context 추가
-->
<!--
Spring Bean Configuration File
Bean 생성 방법 1
<bean id="객체명(인스턴스명)" class="클래스명">
<property name="필드명1">
<value>값1</value> // 문자든 숫자든 큰 따옴표 없이 그냥 적는다.
</property>
<property name="필드명1" value="값2"> // 문자든 숫자든 큰 따옴표로 적는다.
** property 를 이용하여 set 주입
<constructor-arg name="필드명3" value="값3" />
** constructor 를 이용하여 생성자 주입
</bean>
-->
<!--
scope : singleton, prototype
singleton : 객체를 하나만 만든다.
prototype : 객체를 새로 계속 만든다.
default 값은 singleton 이다.
-->
<bean id="ltv" class="org.joonzis.DI_3.LgTV" scope="prototype"></bean>
<!-- LgTV ltv = new LgTV(); -->
<bean id="stv" class="org.joonzis.DI_3.SamsungTV"></bean> <!-- 기본값 싱글톤 -->
<!-- SamsungTV stv = new SamsungTV(); -->
</beans>
반응형
'Spring & Spring Boot' 카테고리의 다른 글
DI_5_constructor (0) | 2023.07.04 |
---|---|
DI_4 (0) | 2023.07.04 |
DI_2 (0) | 2023.07.04 |
DI_1 (0) | 2023.07.03 |
Java 정리 - Spring (계속 추가) (0) | 2023.06.29 |