본문 바로가기
Web Programming/Spring

Spring/DI/Dependencty Injection

by hyeon-H 2021. 5. 15.
728x90
반응형

스프링이 가지고 있는 가장 기본적인 능력은?
객체를 생성해주고 객체를 조립해주는 능력이라고 할 수 있습니다.

DI(Dependenct Injection)와 IoC Container가 있습니다.

DI란?
Dependencty Injection
(종속성,의존성 주입)
(부품조립)

Dependencty 

Composition has a (일체형 has a 관계 ) 부품형 

class A{
	private B b;
    
    public A(){
    	b = new B();
    }
}

//일체형으로 자기의 부품을 가졌다.
//B 는 A의 부품이다
//부품은 Dependency이다 
//B는 A의 종속성 or 종속객체이다
//직접 생성하고 있다.

조립형

class A{
	private B b;
    
    public void setB(B b){
    	this.b = b;
    }
}

//직접 생성하지 않고있다. 생성은 외부에서 해주고
//그 생성을 setter로 set해준다.
//

 

스프링에서 DI가 중요한 이유?

일체형보다는 조립형이 결합력이 훨씬 더 낮아지고, 부품을 쉽게 교체, 업데이트를 할 수 있는 방식
조립형이 더욱 선호되는 경우가 있다.

Injection

//부품형
	A a = new A();
		//객체 안에 어떤 부품이 있는지 모른다.
		//부품을 교체 할 수 없다.
        
//조립형
	B b = new B();
	A a = new A();
		//a 를 그냥 생성 할 수 있는것이 아니라
		//b 부품을 만들어서
	a.set(b);
		//a 안에 set해주게 된다.
		//부품을 교체, 주입해주는 과정을 Injection이라고 한다.
        
        //B b = new B() <= Dependency
        //a.set(b) <= Injection

 

 

Injection 방법

Setter Injection

B b = new B();
A a = new A();

a.set(b);

Constuction Injection

B b = new B();
A a = new A(b);

 

스프링은 객체를 생성하고 조립해주는 역할을 해줄 수 있다.

스프링이 가지고 있는 가장 기본적인 능력은 Dependency를 Injection(의존성을 주입)해주는 능력,
부품을 조립해주는 능력이다.
원하는 부품이 뭐가 있는지, 어떠한 부품을 결합을 하기를 원하는지만 설정해주면 스프링이 조립해주고,
우리는 조립된 결과를 사용하면 된다.

728x90
반응형