일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 개발자 취업
- 코딩문제
- 코딩테스트 준비
- Spring
- 프로그래머스
- HTML
- github
- 코딩공부
- wil
- 정렬 알고리즘(sort algorithm)
- 99클럽
- 우선순위 큐(priorityqueue)
- Entity
- 회고
- 메서드
- css
- Til
- 이진 탐색(binary search)
- 면접(java
- Grafana
- ArrayList
- 자바
- 자료구조
- 항해99
- cs 공부)준비
- 코딩
- GIT
- 배열
- Java
- aop
- Today
- Total
hayu's 개발 일지
[TIL]240302 IoC / DI 본문
IoC 란?
- IoC 는 제어의 역전이다.
- 프로그램의 제어 흐름 구조가 뒤바뀌는 것을 말한다. 즉, 모든 종류의 작업을 사용하는 쪽에서 제어하는 구조를 거꾸로 뒤집는 것이다.
- 제어권을 상위 템플릿 메소드에 넘기고 자신은 필요할 때 호출되어 사용하도록 한다는 개념이다.
-> 예를 들어 스프링 컨테이너에서 직접 객체를 생성하여 해당 객체의 주입 시키는 것을 말한다.
IoC 의 장점
- 객체간의 결합도를 낮춘다.
- 유연한 코드 작성이 가능하다.
- 가독성이 증가한다.
- 코드 중복이 방지된다.
- 유지 보수가 편하다.
- IoC 를 적용하면 객체를 클래스 내부에서 직접 생성하여 사용하지 않고 미리 생성해놓은 객체를 주입받아 사용하면 된다.
-> 프로그램의 제어 흐름을 직접 제어하는 것이 아닌 외부에서 관리한다.
DI 란?
- 의존 관계 주입(의존성 주입)을 말한다.
- 객체를 직접 생성하는 것이 아니라 외부에서 생성한 후 주입시켜주는 방식이다.
의존성이란?
- 의존대상이 변하면 그것이 영향을 미치는 것이다. 의존대상의 기능이 추가되거나 변경되면 그 영향이 전달되는 것을 말한다.
- 여기서 의존성을 주입받게 되면 의존대상을 마음대로 갈아끼울 수 있어 의존도와 결합도가 낮아진다.
DI는 세가지 방식이 있다.
- 생성자 주입
- Setter 주입
- 필드 주입
DI의 장점
- 불변성을 활용할 수 있다.(final 로 선언 가능)
- NullPointerException 발생을 막는다.
-> 객체가 생성되는 시점에 빈을 주입한다. 생성기에 의존성 없이는 생성 불가능하기 때문에 일부러 nill을 넣지 않는 한 NullPointerException 이 발생하지 않는다.
'프레임워크 > spring' 카테고리의 다른 글
[TIL]240313 Builder Pattern (0) | 2024.03.13 |
---|---|
[TIL]240312 트랜잭션(transaction) (0) | 2024.03.12 |
[TIL]240308 트러블 슈팅: 로그인 성공 메세지 (0) | 2024.03.08 |
[TIL]240307 영속성 컨텍스트 (1) | 2024.03.07 |
[TIL]240304 스프링 MVC 와 Front Controller (0) | 2024.03.04 |