리꾸므

3주차_회고(feat.DI,IoC,Bean) 본문

발걸음/일지

3주차_회고(feat.DI,IoC,Bean)

리꾸므 2022. 8. 21. 17:57

3주차 keyword : DI, IoC, Bean

Dl(Dependency Injection)이란?

외부에서 두 객체 간의 관계를 결정해주는 디자인패턴으로, 인터페이스를 사이에 둬서 클래스 레벨에서는 의존관계가 고정되지 않도록 하고 런타임 시에 관계를 동적으로 주입하여 유연성을 확보하고 결합도를 낮출 수 있게 해준다. 

 - 의존성이란 한객체가 다른 객체를 사용할 때 의존성이 있다고한다. 예로 Public Transportation 객체가 Bus 객체를 사용하고 있을 경우 우리는  Public Transportation 객체가 Bus 객체에 의존성이 있다고 표현한다.

public class Public Transportation {
	private Bus bus
}

 

Dl 특징

  • 하나의 모듈/서비스가 가지고 있는 의존성을 외부로 통해 주입을 받는다.
  • 주입 방식은 생성자, setter등을 이용하여 의존성을 주입받을 수 있다.
  • Spring에서는 @Autowried의 키워드를 이용하여 의존성 주입이 되는 대상을 지정한다.

 

IoC(Inversion of Control)란?

프레임워크의 핵심요소이며 스프링에도 예외없이 존재하는 개념이다. IoC는 풀이하면 제어의 역전 또는 제어의 반전이며 이것은 메소드나 객체의 호출작업이 개발자에 의해 결정되는 것이 아닌 외부(스프링)에서 결정되는 것을 의미한다.

 프링에서는 main은 run()만 호출하고 끝난다. 어떤 요청이 들어왔을때 어떤 객체를 생성하고 사용하며 조작할것인가는 컨테이너가 대신 처리하게 된다. 이 덕분에 개발자는 컨테이너에게 동작을 지시하는 정도로 비즈니스와 별로 관련 없는 다양한 작업들을 컨테이너에 위임 할 수 있고 따라서 개발자가 비즈니스 로직을 작성하는데 집중할 수 있다.  이처럼 프로그램의 실행 흐름이나 객체의 생명 주기를 개발자가 직접 제어하는 것이 아닌, 컨테이너로 제어권이 넘어가는것을 IoC라고 한다.

 

IoC의 특징

  • 개발자가 객체 생성을 직접 컨트롤하지않고 컨테이너에서 객체를 관리
  • Spring에서 IoC Container인 ApplicationContext에서는 bean.xml또는 annotation을 이용하여 객체를 관리

 

Spring Bean이란?

IoC가 관리하는 자바 객체를 빈(Bean)이라고 부른다. 스프링(Spring)에서 사용자는 직접 new로 생성한 객체를 사용하지 않고, 스프링에 의하여 관리당하는 빈을 사용한다. 스프링이 모든 의존성 객체를 실행될때 다 만들어주고 필요한 곳에 주입시킴으로써 빈들은 싱글턴 패턴의 특징을 가진다.

 

 

 

 

 

 

 

 

'발걸음 > 일지' 카테고리의 다른 글

4주차_회고  (0) 2022.08.28
16번째 발자국_쿠키와 세션  (0) 2022.08.22
15번째 발자국_MVC  (0) 2022.08.21
14번째 발자국_Spring Security 회원관리  (0) 2022.08.20
12번째 발걸음_마크다운(feat.README)  (0) 2022.08.17