굥뷰를 햡시댜
[Spring] IoC(Inversion of Control), DI(Dependency Injection) 본문
[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 |