굥뷰를 햡시댜

[Spring] IoC(Inversion of Control), DI(Dependency Injection) 본문

웹/Spring Framework

[Spring] IoC(Inversion of Control), DI(Dependency Injection)

GodZ 2019. 8. 8. 21:48

 

IoC(Inversion of control)이란 제어의 역전을 말한다.

 

한글로 풀어놔도 이해하기 난해한? 단어의 조합이다.

 

쉽게 생각하면 IoC는 '대신 해준다'라는 의미로 생각하면 된다.

 

 

1. Bean

-> 스프링이 제어권을 가지고 직접 생성하고 관계를 부여하는 수동적인 제어의 역전이 적용된 객체

-> 한마디로 스프링이 IoC(대신해줌)를 할 때 사용하는 객체이다.

 

2. Bean Factory

-> Bean의 생성, 등록, 조회 및 관계설정 제어를 담당하는 IoC 객체

-> 보통은 Bean Factory를 사용하지 않고 이를 확장한 Application Context를 이용한다.

 

3. Application Context

-> Bean Factory 확장 IoC 객체(Bean Factory에 상속)

-> Application 전반에 걸친 구성요소의 제어 작업을 담당하는 IoC 엔진

-> Application Context의 역할

  - Application에서 관리할 모든 객체에 대한 생성과 관계설정을 담당한다.

  - 직접 객체를 생성하고 관계를 맺는 코드는 Java나 XML을 통해 얻기 때문에 Java나 XML Spring 설정 파일에 각 Bean에 대한 정보를 기입한 후 사용해야 한다.

  - But, 최근에는 Annotation 기반으로 동작하기 때문에 Bean들을 각각 등록할 빈도가 줄었다.

 

-> 한마디로 Application Context는 Bean을 관리한다.

 


 

DI(Dependency Injection)이란? 말 그래도 의존성 주입이다.

 

스프링에서 객체간의 관계설정 의도를 명확히 표현하기 위해 사용하는 개념이다.

 

@Autowired, @Inject와 같은 Annotation을 사용해 의존관계를 명확히 표시할 수 있다.

(Spring에서는 보통 Autowired보다 Inject를 사용하는 것을 권장한다.)

 

뿐만 아니라, pom.xml에서는 <dependency></dependency>와 같은 태그를 사용해 의존성을 주입할 수 있다.

 

 

 

 

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

Spring MVC  (2) 2019.08.05
IntelliJ에서 Spring 프로젝트 만들기  (0) 2019.08.02
Comments