KEEP GOING

[SRPING] 제어의 역전(IoC), 의존성 주입(DI) 본문

web/spring

[SRPING] 제어의 역전(IoC), 의존성 주입(DI)

jmHan 2022. 5. 24. 13:27
반응형

(1) 의존성 주입(DI)

스프링 컨테이너가 객체간 의존성을 주입해준다.

 

[의존성을 주입하지 않은 예제]

public class Gun{
  ...
}
public class Soldier(){
	private Gun gun;
    
    public Soldier(){
    	gun = new Gun();
    }
}

Soldier 클래스에서 자체적으로 Gun 객체를 생성했기에 의존성을 주입한 것이 아니라 스스로 의존성을 만든 것이 된다.

 

[스프링 컨테이너가 의존성을 주입한 예제]

@Component //bean으로 등록
public class Gun{
  ...
}
public class Soldier(){
	@Autowired // 스프링 컨테이너에 있는 Gun 타입의 bean 주입
	private Gun gun;
}

Gun 객체를 스프링 컨테이너에 등록하고 스프링 컨테이너에서 Soldier의 gun 멤버 변수에 의존성을 주입한다. 

 

(2) 제어의 역전(IoC)

스프링 컨테이너가 개발자대신 Bean들을 관리함.

일반적으로 개발자가 new 키워드를 통해 객체를 생성하고 의존성을 연결해주지만 

스프링에서는 xml이나 어노테이션을 활용하여 Bean으로 등록한다면 스프링 컨테이너가 객체의 생명주기를 전부 관리해준다.

따라서 객체의 제어권이 컨테이너에게 역전되므로 이를 제어의 역전이라고 한다. 

제어의 역전은 의존성 주입의 상위 개념이다.

제어의 역전은 코드의 재사용성, 유지보수성을 높여준다.

 

반응형
Comments