일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
Tags
- IOC
- Atomicity
- 수정자주입
- 스프링 시큐리티 설정
- jpa lazy
- 자바 필터
- method refetence
- kotlin 리팩터링
- 동적파라미터
- 스프링 포매터
- 스프링di
- spring formatter
- java predicate
- 소프트웨어의 품격
- 스프링부트 도커
- open-session-in-view
- jpa no session
- Spring
- 토비의 스프링
- 도커 이미지 빌드
- 스프링시큐리티
- ioc컨테이너
- 기능적 요구사항
- 그래프큐엘
- 비기능적 요구사항
- 생성자주입
- kotlin ::
- fetch join
- 정적팩토리메서드
- 스프링
Archives
- Today
- Total
공부기록
IoC/DI 본문
반응형
IoC(Inversion of Control)
제어의 역전. 프로그램의 제어 흐름 구조가 뒤바뀐 것.
일반적 으로 오브젝트는 능동적으로 자신이 사용할 클래스를 결정하고, 언제 어떻게 그 오브젝트를 만들 지 스스로가 정한다. 모든 종류의 작업을 사용하는 쪽에서 제어하는 구조다.
제어의역전 개념이 적용된 오브젝트는 자신이 사용할 오브젝트를 스스로 선택하지 않는다. 당연히 생성하지도 않는다. 자신 또한 어떻게 만들어지고 어디서 사용되는지 알 수 없다. 모든 제어권한은 자신이 아니라 다른 대상에 있기 때문.
- 제어의 역전이 적용된 예.
- 템플릿메서드패턴. - 제어권을 상위 템플릿메서드에 넘기고, 자신은 필요할 때 호출되어 사용된다. ex ) UserDao를 상속받은 서브클래스는 추상메서드 getConnection()을 구현한다. 슈퍼클래스인 UserDao의 템플릿메소드인 add(), get() 등에서 필요할 때 getConnection()을 호출해 사용한다. 즉! 제어권을 상위 템플릿 메서드에 넘기고 자신은 필요할 때 호출되어 사용한다.
- 프레임워크 - 애플리케이션코드가 프레임워크에 의해 사용된다. 프레임워크가 흐름을 주도하는 중에 개발자가 만든 코드를 사용한다.
반면 라이브러리는 애플리케이션코드가 애플리케이션 흐름을 직접 제어한다. 동작하는 중에 필요한 기능이 있을 때 능동적으로 라이브러리를 사용한다.
- 제어의 역전이 적용된 예.
DI(Dependency Injection)
- 오브젝트 레퍼런스를 외부로부터 제공(주입)받고 이를 통해 여타 오브젝트와 다이내믹하게 의존관계가 만들어지는 것이 핵심이다.
- 단지 외부에서 파라미터로 오브젝트의 레퍼런스를 넘겨줬다고 해서 다 DI가 아니다. DI에서 말하는 주입은 다이내믹하게 구현 클래스를 결정해서 제공받을 수 있도록 인터페이스타입의 파라미터를 통해 이뤄져야한다.
반응형
'Spring' 카테고리의 다른 글
[spring security] TEST방법. (1) | 2019.10.11 |
---|---|
스프링 애플리케이션이란? (0) | 2019.10.09 |
스프링이 제공해주는 것들 (0) | 2019.09.28 |
[spring security]레거시 프로젝트에 스프링 시큐리티를 적용해보자.(1) (0) | 2019.09.14 |
[SPRING] 스프링부트 테스트관련 어노테이션 정리 (0) | 2019.08.16 |