일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 스파르타코딩클럽 #부트캠프 #IT #백엔드 #머신러닝 #딥러닝 #AI #서버 #자동화 #SQL #기본문법 #데이터베이스 #DBMS #Oracle #MongoDB #아키텍쳐 #DB
- aws #아키텍트 #과정 #vpc #인프라 구축 #second nat #gateway #routing table #route53 #고가용성 #private subnet #
- aws #아키텍트 #과정 #vpc #인프라 구축 #php #alb #application #load #balancer #security #group #igw #ec2 #vpc #virtual #private #cloud
- aws #아키텍트 #과정 #vpc #인프라 구축 #amazon sns #server #less #architecture
- aws #아키텍트 #과정 #vpc #인프라 구축 #alb #load balancer #t.g #target #group #haproxy #high ability #db #replica #region
- aws #아키텍트 #과정 #vpc #인프라 구축 #rds #endpoint #cloudwatch #monitoring
- 스파르타코딩클럽 #부트캠프 #IT #백엔드 #머신러닝 #AI #서버 #자동화 #SQL #기본문법 #데이터베이스 #웹개발
- aws #아키텍트 #과정 #vpc #인프라 구축 #sqs #trigger #python3.9 #패키지 #
- aws #아키텍트 #과정 #vpc #인프라 구축 #aurora #database #rds #rdbs #load #balancer #web #page #haproxy
- 스파르타코딩클럽 #부트캠프 #IT #백엔드 #머신러닝 #AI #서버 #자동화 #SQL #KDT #기본문법 #데이터베이스 #Computer #Science #CPU #메모리
- aws #아키텍트 #과정 #vpc #인프라 구축 #db #장애조치 #reand only #replica #events
- aws #아키텍트 #과정 #vpc #인프라 구축 #haproxy #고가용성 #테스트 #alb #application #load balancer #application
- aws #아키텍트 #과정 #vpc #인프라 구축 #s3 #bucket #객체 스토리지 #objects storage #events #upload #알림
- 공간복잡도 #공간자원 #캐시메모리 #SRAM #DRAM #시간복잡도
- 업로드 #lambda #함수 #모바일 이미지 #썸네일 이미지
- 스파르타코딩클럽 #부트캠프 #IT #백엔드 #머신러닝 #딥러닝 #AI #서버 #자동화 #SQL #기본문법 #데이터베이스
- aws #아키텍트 #과정 #vpc #인프라 구축 #sqs #message #queue #sns구독
- aws #아키텍트 #과정 #vpc #인프라 구축 #haproxy #round robin #process #high ability #auto scailling #app server #launch template
- 스파르타코딩클럽 #부트캠프 #IT #백엔드 #머신러닝 #AI #서버 #자동화 #SQL #기본문법 #데이터베이스
- 스파르타코딩클럽 #부트캠프 #IT #백엔드 #OSI #ISO #AI #서버 #자동화 #SQL #기본문법 #데이터베이스 #DBMS #Oracle #MongoDB #아키텍쳐 #DB
- 비트 #바이트 #이진수
- aws #아키텍트 #과정 #vpc #인프라 구축
- 쓰레드 #쓰레드풀 #프로세스
- aws #아키텍트 #과정 #vpc #인프라 구축 #t.g #target group #alb #application #load #balancer #web #server
- aws #아키텍트 #과정 #vpc #인프라 구축 #ec2 #instance #launch #template #생성 #ami #amazone #machine #image
- 프로세스 #CPU #시공유 #커널
- aws #아키텍트 #과정 #vpc #인프라 구축 #rds #replica #복제본 #aurora #database #고가용성
- 썸네일 #이미지
- aws #아키텍트 #과정 #vpc #인프라 구축 #s3 #bucket #객체 #스토리지 #isci #이미지 #업로드
- aws #아키텍트 #과정 #vpc #인프라 구축 #auto scailling #lauch template #ec2 instace #private #subnet
- Today
- Total
요리사에서 IT개발자로
(스파르타 코딩클럽) DI, IOC란 본문
IOC(Inversion of Control)이란
제어의 역전
메서드나 객체의 호출 작업을 개발자가 아닌 스프링에게 제어권을 넘기는것.
이전까지는 개발자가 객체의 생성을 관리하며 제어했으나
스프링을 사용하게 되면서 스프링 컨테이너에 제어권을 넘겨 스프링 컨테이너가 흐름을 제어한다.
DI(Dependency Injection)
의존성 주입
객체를 직접 생성하는게 아닌 외부(IOC컨테이너)에서 생성한 후 주입시켜주는 방식
의존성 주입 방식
생성자 주입(Constuctor Injection)
수정자 주입(Setter Injection)
필드 주입(Field Injection)
스프링에서 권장하는 의존성 주입 방법은 생성자 주입(Constuctor Injection) d이다
생성자 주입이란
생성자를 통해 의존관계를 주입하는 방법으로 생성자를 호출시에 딱 한번만 호출되는 것을 보장한다
@Controller
public class TestController {
private final TestService testService;
public TestController(TestService testService){
this.testService = testService;
}
}
출처: https://mozzi-devlog.tistory.com/18 [우당탕탕:티스토리]
수정자 주입이란
Setter를 사용하여 의존관계를 주입하는 방법 .
수정 가능성이 존재하는 의존관계일 때 사용하고 자바의 Bean프로터피 규익 Setter메서드 방식을 사용한다.
수정자 주입의 경우 final선언이 불가능하고 setter메서드에 @Autowired르르 사용한다.
@Controller
public class TestController {
private TestService testService;
@Autowired
public void setTestService(TestService testService){
this.testService = testService;
}
}
출처: https://mozzi-devlog.tistory.com/18 [우당탕탕:티스토리]
필드주입이란
직접 의존관계를 주입하는 방법이다
코드가 짧아지는 장점이 있지만 외부에서 변경이 불가능하고 테스트 코드를 작성하기 힘들다는 단점이 존재
@Controller
public class TestController {
@Autowired
private TestService testService;
}
출처: https://mozzi-devlog.tistory.com/18 [우당탕탕:티스토리]
위 세가지 의존성 주입중에 생성자 주입을 추천하는 이유
- 의존 관계가 설정이 되지 않으면 컴파일 시점에 알 수 있다.
- 의존성 주입이 필요한 필드를 final키워드로 선언이 가능하다.
- 스프링에서 순환 참조 기능을 제공하며 순환 참조 시 에러를 보여준다.
- 테스트 코드 작성에 용이하다.
정리
클래스 모델이나 코드에는 런타임 시점의 의존관계가 드러나지 않는다.
인터페이스에만 의존하고 있어야한다.
런타임 시점의 의존관계는 컨테이너 팩토리 같은 제 3의 존재가 결정한다.
의좐관계는 사용할 오브젝트에 대한 래퍼런스를 외부에서 제공(주입)해줌으로써 만들어진다.
DI의 핵심
설계 시점에서 알지 못했던 두 오브젝트의 관계를 맺도록 도와주는 제 3의 존재
(애플리케이션 컨텍스트, 빈팩토리, IOC컨테이너)가 있다.
의존관계 주입(DI)이란 DI 컨테이너를 통해 의존 오브젝트의 래퍼런스를 전달받는 과정을 말한다.
DI는 자신이 사용할 오브젝트에 선택과 생성 제어권을 외부로 넘기고
자신은 수동적으로 주입받은 오브젝트를 사용한다는 점에서 IoC의 개념이 잘 들어맞는다.
스프링 컨테이너의 IoC는 주로 의존관계 주입 또는 DI라는 초점에 맞추어져 있으며
스프링을 IoC컨테이너 이외 DI컨테이너, DI프레임 워크라고도한다.
https://ktpark1651.tistory.com/336
'TIL' 카테고리의 다른 글
(스파르타 코딩클럽)GET, POST의 개념과 데이터 흐름 (2) | 2024.07.29 |
---|---|
(스파르타 코딩클럽)대용량 트래픽 발생 시 대응방법 (0) | 2024.07.26 |
(스파르타 코딩클럽) TCP와 UDP의 특징 (2) | 2024.07.24 |
(스파르타 코딩클럽)브라우저의 작동방식 (4) | 2024.07.23 |
(스파르타 코딩클럽) CORS란 (0) | 2024.07.23 |