Spring

IOC, DI, Annotation

chojdsj 2023. 8. 23. 00:07
728x90

 

 

Spring IOC(Inversion of Control), IOC(제어 반전)란?

 

- IOC란 Inversion of Control의 약자로 프로그램을 구동하는데 필요한 객체에 대한 생성, 변경등의 관리를 프로그램을 개발하는 사람이 아닌 프로그램을 구동하는 컨테이너에서 직접 관리하는 것을 말한다.

 

- 스프링은 IOC 구조를 통해 구동 시 필요한 객체의 생성부터 생명 주기 까지 해당 객체에 대한 관리를 직접 수행한다.

 

 

 

IOC 컨테이너

 

- 스프링에서 관리하는 객체를 'Bean(빈)'이라고 하고, 해당 빈들을 관리한다는 의미로 컨테이너를 'Bean Factory'라고 한다.

 

** IOC 컨테이너의 역할 **

 

- 객체의 생명주기와 의존성을 관리한다.

 

- VO(DTO / POJO) 객체의 생성, 초기화, 소멸 등의 처리를 담당한다.

 

- 개발자가 직접 객체를 생성할 수는 있지만 해당 권한을 컨테이너에 맡김으로써 소스코드 구현의 시간을 단축할 수 있다.

 

 

 

 

IOC 컨테이너와 Bean 객체

 

 

 

 

 

 

 

 

DI (의존성 주입) 란?

 

- DI란 Dependency Injection의 약자로 IOC 구현의 핵심 기술이라고 할 수 있다. 사용하는 객체를 직접 생성하여 만드는 것이 아니라 컨테이너가 빈의 설정 정보를 읽어와 자동으로 해당 객체에 연결하는 것을 의미한다.

 

- 이렇게 의존성을 주입받게 되면 이후 해당 객체를 수정해야 할 상황이 발생했을 때, 소스코드의 수정을 최소화 할 수 있다.

 

 

 

** DI의 장점 **

 

- 개발자가 작성해야 할 코드가 단순해진다.

 

- 각 객체간의 종속 관계(결합도)를 해소할 수 있다.

 

* 객체간의 종속 관계(결합도) : 한 클래스에서 필드 객체를 생성할 때 발생하는 두 객체간의 관계를 말하며, 각 객체간의 내용이 수정될 경우 영향을 미치는 정도를 나타냄

 

 

 

 

 

 

@Annotaion

 

 

- XML 파일에는 구동시킬 필수 요소만 작성하고 소스코드에 Annotation으로 표시하여 구동하는 방식

 

 

 

** @Annotation 종류 (Bean 등록시 사용) **

 

 

 

 

** @Annotation 종류 (의존성 주입 시 사용) **

 

 

 

 

'Spring' 카테고리의 다른 글

Spring 파이널 알림함  (1) 2023.10.16
Spring 파이널 프로젝트 js 문자열  (0) 2023.10.03
Spring 파이널 프로젝트 칼럼게시판 글 작성  (0) 2023.09.26
Spring Framework  (0) 2023.08.16
Framework  (0) 2023.08.16