hyeonga_code

Spring_Spring DI_Dependency Injection_XML 설정_Spring IoC 본문

Spring

Spring_Spring DI_Dependency Injection_XML 설정_Spring IoC

hyeonga 2023. 12. 14. 07:59
반응형


- 스프링 IoC 
- 소스코드를 변경하지 않고 매개 변수를 이요하여 객체를 변경할 수 있도록 구현합니다.
- 스프링 설정 파일 생성 및 스프링 컨테이너 구동
1) 클라이언트가 스프링 설정 파일을 로딩하여 컨테이너를 구동합니다.
2) 스프링 설정 파일에 bean 등록된 객체를 생성
3) getBean() 메소드로 bean에 설정한 객체를 요청
4) 객체를 반환

- src/main/resources > Spring Bean Configuration File 생성하기
'applicationContext.xml'
<bean id="tv" class="basic.spring.polymorphism.SamsungTV" /> 추가
<bean id="tv2" class="basic.spring.polymorphism.LgTV2" />
=====

1
2
3
4
5
6
7
8
9
<?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="basic.spring.polymorphism.SamsungTV" />
    <bean id="tv2" class="basic.spring.polymorphism.LgTV2" />
</beans>



- src/main/java > basic.spring.polymorphism > 'TVUser4.java' 클래스 생성
=====

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
package basic.spring.polymorphism;
 
import org.springframework.context.support.AbstractApplicationContext;
import org.springframework.context.support.GenericXmlApplicationContext;
 
public class TVUser4 {
    public static void main(String[] args) {
        AbstractApplicationContext fac = new GenericXmlApplicationContext("applicationContext.xml");
        
        TV tv = (TV)fac.getBean("tv");
        tv.powerOn();
        tv.volumeUp();
        tv.volumeDown();
        tv.powerOff();
        System.out.println();
        
        TV tv2 = (TV)fac.getBean("tv2");
        tv2.powerOn();
        tv2.volumeUp();
        tv2.volumeDown();
        tv2.powerOff();
        
        fac.close();
    }
}


>>> TV를 변경할 때 applicationContext.xml 파일만 수정하면 언제든 변경할 수 있습니다.

반응형