Spring/Study 2020. 4. 8. 22:35

(공감과 댓글 하나는 글쓴이에게 큰 힘이 됩니다.)

 

DI(Dependency Injection)란 의존성 주입이라고도 하며, 객체를 직접 생성하는 것이 아니라 외부에서 객체를 생성한 후 주입하는 방식을 말한다. DI를 이용하면 프로그램을 수정할 때 설정 파일만 바꿔주면 되기 때문에 확장성이 뛰어나고, 유지보수에 용이하다.

 

방법1) 객체 직접 생성

Hello.java

1
2
3
4
5
6
7
package helloSpring;
 
public class Hello {
    public void print() {
        System.out.println("Hello World!");
    }
}
cs

- Line 4 : print() 메소드 선언

- Line 5 : Hello World! 출력

MainClass.java

1
2
3
4
5
6
7
8
package helloSpring;
 
public class MainClass {
    public static void main(String[] args) {
        Hello hello = new Hello();
        hello.print();
    }
}
cs

- Line 5 : new를 이용하여 hello 객체 생성

- Line 6 : print() 메소드 호출

 

방법2) 외부에서 객체를 생성한 후 주입

Hello.java

1
2
3
4
5
6
7
8
package helloSpring;
 
public class Hello {
    public void print() {
        System.out.println("Hello World!");
    }
}
 
cs

- Line 4 : print() 메소드 선언

- Line 5 : Hello World! 출력

applicationContext.java

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="hello" class="helloSpring.Hello" />
 
</beans>
cs

- Line 7 : Hello 클래스를 hello라는 ID의 bean으로 등록

MainClass.java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
package helloSpring;
 
import org.springframework.context.support.GenericXmlApplicationContext;
 
public class MainClass {
    public static void main(String[] args) {
        GenericXmlApplicationContext ctx = new GenericXmlApplicationContext("classpath:applicationContext.xml");
        
        Hello hello = ctx.getBean("hello", Hello.class);
        hello.print();
        
        ctx.close();
    }
}
 
cs

- Line 7 : 스프링 컨테이너가 생성되고, 내부에 bean 객체들이 생성 (XML로부터 객체 설정 정보를 가져옴)

- Line 9 : hello라는 객체를 생성하고, XML에서 ID가 hello인 bean을 가져와서 넣어줌

- Line 10 : hello 객체의 print() 메소드 호출

- Line 12 : 스프링 컨테이너와 bean 객체들이 소멸

'Spring > Study' 카테고리의 다른 글

스프링(Spring) 설정 파일 분리  (0) 2020.04.09
스프링(Spring) 다양한 의존 객체 주입  (0) 2020.04.08
스프링(Spring) Hello World!  (0) 2020.04.07
스프링(Spring) 프로젝트 생성  (0) 2020.04.07
스프링(Spring) 개요  (0) 2020.04.06
posted by DevMoomin
: