티스토리 뷰

개발/Spring

스프링 관련 용어 - Ioc/DI

책 읽는 개발자_테드 2020. 1. 19. 01:17

Ioc(Inversion of control)란?

-IoC(제어의 역전)이란 프로그램의 제어 흐름 구조가 뒤바뀌는 것이다. 

 일반적으로 프로그램의 흐름은 main() 메소드와 같이 프로그램이 시작되는 지점에서 다음에 사용할 오브젝트를 결정하고, 결정한 오브젝트를 생성하고, 만들어진오브젝트에 있는 메소드를 호출하고, 그 오브젝트 메소드 안에서 다음에 사용할 것을 결정하고 호출하는 식의 작업이 반복된다. 

 제어의 역전이란 이런 제어 흐름의 개념을 거꾸로 뒤집는 것이다. 오브젝트가 자신이 사용할 오브젝트를 스스로 선택하지 않는다. 당연히 생성하지도 않는다. 또 자신도 어떻게 만들어지고 어디서 사용되는지를 알 수 없다. 모든 제어 권한을 자신이 아닌 다른 대상에게 위임하기 때문이다. 스프링에서는 application context라고하는 IoC 컨테이너를 통해 IoC를 관리한다. 

 

-스프링은 IoC를 모든 기능의 기초가 되는 기반기술로 삼고 있으며, IoC를 극한까지 적용하고 있는 프레임워크다. 스프링의 대표적인 IoC 동작원리로 DI(dependency Injection)이 있다.

출처:http://www.ytechie.com/2008/06/i-finally-get-the-point-of-inversion-of-control/

 

 

-프레임워크는 제어의 역전 개념이 적용된 대표적인 기술이다. 프레임워크는 단지 미리 만들어둔 반제품이나 확장해서 사용할 수있도록 준비된 추상 라이브러리의 집합이 아니다. 라이브러리를 사용하는 애플리케이션 코드는 애플리케이션 흐름을 직접 제어한다. 반면에 프레임워크는 거꾸로 애플리케이션 코드가 프레임워크에 의해 사용된다. 보통 프레임워크 위에 개발된 클래스를 등록해두고, 프레임워크가 흐름을 주도하는 중에 개발자가 만들 애플리케이션 코드를 사용하도록 만드는 방식이다. 

출처:https://www.programcreek.com/2011/09/what-is-the-difference-between-a-java-library-and-a-framework/

 

-IoC를 사용하는 이유: 작성중

 

DI(Dependency Injection) 란?

 

-의존관계 주입, 의존관계 설정이라는 의미이다.

-스프링 IoC 기능의 대표적인 동작원리이다.

-DI는 오브젝트 레퍼런스를 외부로부터 제공(주입)받고 이를 통해 여타 오브젝트와 다이나믹하게 의존관계가 만들어지는 것이다.

 

출처:https://www.codeproject.com/Articles/592372/Dependency-Injection-DI-vs-Inversion-of-Control-IO

의존관계란?

-의존 관계란 한쪽의 변화가 다른 쪽에 영향을 주는 것이다. 

-인터페이스를 통해 의존관계를 제한해주면 그만큼 변경에서 자유로워질 수 있다.

 

 

Application Context란?

-스프링 애플리케이션 전반에 걸쳐 모든 구성요소의 제어 작업을 담당하는 IoC 엔진이다.

 

-IoC 방식을 따라 만들어진 일종의 빈 팩토리이다. 빈 팩토리라고 말할 때는 빈을 생성하고 관계를 설정하는 IoC의 기본 기능에 초점을 맞춘 것이고, 애플리케이션 컨텍스트는 별도의 정보를 참고해서 빈의 생성, 관계설정 등의 제어를 총괄한다. 

 

-싱글톤을 저장하고 관리하는 싱글톤 레지스트리이다. 스프링은 기본적으로 별다른 설정을 하지 않으면 내부에서 생성하는 빈 오브젝트를 모두 싱글톤으로 만든다.

 

 매번 클라이언트에서 요청이 올 때마다 각 로직을 담당하는 오브젝트를 새로 만들어서 사용한다고 생각해보자 요청 한 번에 5개의 오브젝트가 새로 만들어지고 초당 500개의 요청이 들어오면, 초당 2500개의 새로운 오브젝트가 생성된다. 서버가 감당하기 힘들다. 그래서 필요한 것이 싱글톤이다.

 

Bean Factory란?

-빈의 생성과 관계설정 같은 제어를 담당하는 IoC 오브젝트이다.

 

Bean이란?

-스프링에서는 스프링이 제어권을 가지고 직접 만들고 관계를 부여하는 오브젝트를 Bean이라고 부른다.

-스프링에서 빈 등록은 XML, 자바 코드(애너테이션)를 통해 할 수 있다.

 

 

출처:토비의 스프링

 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함