목차
1. IoC(Inversion of Control)
- 객체의 생성, 관리, 의존성 주입 등과 같은 프로그램 제어 흐름을 개발자가 직접 제어하는 것이 아니라 프레임워크나 라이브러리가 제어하는 것.
- IoC 컨테이너는 객체의 생성을 책임지고, 의존성을 관리함.
- POJO의 생성, 초기화, 서비스, 소멸에 대한 권한을 가짐.
장점
- 개발자는 비즈니스 로직에 집중 가능.
- 객체 생성 코드가 없으므로 TDD가 용이함.
💡POJO(Plain Old Java Object)
- 순수한 오래된 자바 객체.
- 스프링이 POJO 기반의 경량화된 개발 환경을 제공하는 오픈소스 프레임워크.
💡TDD
- 테스트 주도 개발.
- 작은 단위의 테스트 케이스를 작성하고 이를 통과하는 코드를 추가하는 단계를 반복하여 구현.
2. DI
- 의존관계를 외부에서 결정하고 주입.
1. 주입 방법
- Constructor Injection
- 생성자를 통해 의존성을 주입하는 방식.
- Setter Injection
- Setter 메서드를 통해 의존성을 주입하는 방식.
- Field Injection
- 필드에 직접 의존성을 주입하는 방식.
- @Autowired 를 이용.
2. 장점
- 유지보수성 향상 : 객체 간 결합도가 낮아져 코드 수정이 용이함.
- 테스트 용이성 : 의존 객체를 쉽게 Mocking 하여 단위 테스트가 수월해짐.
- 재사용성 증가 : 의존성이 외부에 의해 주입되기 때문에 객체의 재사용성이 높아짐.
IoC는 제어권을 프레임워크에 위임하는 포괄적인 개념.
DI는 그 중 하나의 구체적인 구현 방법.
3. Bean
- Spring IoC 컨테이너에 의해 생성되고 관리되는 객체를 Bean 이라고 함.
- @Component, @Service, @Repository, @Controller 등의 어노테이션을 통해 등록됨.
Bean 생명주기(Bean LifeCycle)
- 컨테이너 생성
- Spring IoC 컨테이너가 생성됨.
- Bean 생성
- 컨테이너가 Bean 객체 생성.
- 의존성 주입
- 필요한 의존 객체 주입(DI).
- 초기화 콜백
- @PostConstruct 또는 초기화 메서드를 통해 초기화 작업 수행.
- Bean 사용
- 애플리케이션에서 Bean을 사용.
- 소멸 전 콜백
- @PreDestroy 또는 소멸 메서드를 통해 정리 작업 수행.
- 컨테이너 종료
- Bean이 소멸되고 컨테이너가 종료됨.
4. @Controller
- @Controller 어노테이션은 주로 웹 애플리케이션에서 View를 처리하는데 사용.
- Spring MVC에서 요청을 처리하고 View와 연계하여 결과 반환.
5. @RestController
- 주로 웹 애플리케이션에서 RESTful API를 개발하는데 사용.
- @Controller + @ResponseBody 를 결합한 것.
- 모든 메서드가 자동으로 객체로 반환됨.
- JSON 등의 데이터를 반환할 때 사용함.
[ 출처 ]
https://dev-coco.tistory.com/80
https://dev-coco.tistory.com/82
https://inpa.tistory.com/entry/QA-%F0%9F%93%9A-TDD-%EB%B0%A9%EB%B2%95%EB%A1%A0-%ED%85%8C%EC%8A%A4%ED%8A%B8-%EC%A3%BC%EB%8F%84-%EA%B0%9C%EB%B0%9C
https://velog.io/@jinyeong-afk/%EA%B8%B0%EC%88%A0-%EB%A9%B4%EC%A0%91-Spring-IoC-Inversion-of-Control%EC%99%80-DI-Dependency-Injection%EC%97%90-%EB%8C%80%ED%95%98%EC%97%AC
https://velog.io/@donghokim1998/Controller%EC%99%80-RestController%EC%9D%98-%EC%97%AD%ED%95%A0%EA%B3%BC-%EC%B0%A8%EC%9D%B4%EC%A0%90%EC%9D%80
[Spring] IoC 컨테이너 (Inversion of Control) 란?
IoC (Inversion of Control)? IoC를 네이버 영어사전에서 번역해보면 제어 반전을 뜻하고 있습니다. IoC(제어 반전)이란, 객체의 생성, 생명주기의 관리까지 모든 객체에 대한 제어권이 바뀌었다는 것을
dev-coco.tistory.com
[Spring] POJO(Plain Old Java Object)란?
참고 포조(Plain Old Java Object, POJO)가 뭘까? [ 위키백과 ] Plain Old Java Object, 간단히 POJO는 말 그대로 해석을 하면 오래된 방식의 간단한 자바 오브젝트라는 말로서 Java EE 등의 중량 프레임워크들을 사
dev-coco.tistory.com
🧪 TDD 방법론 (테스트 주도 개발) - 알기 쉽게 정리
TDD(Test Driven Development) 란? TDD란 Test Driven Development의 약자로 '테스트 주도 개발'이라고 한다. 반복 테스트를 이용한 소프트웨어 방법론으로, 작은 단위의 테스트 케이스를 작성하고 이를 통과하는
inpa.tistory.com
@Controller와 @RestController의 역할과 차이점은?
@Controller와 @RestController의 역할과 차이점에 대해 알아보기 전에, 둘의 근본이 되는 Controller의 역할에 대해 이야기하겠습니다. (여기서 Controller는 Spring MVC에서의 Controller를 의미합니다.)제가 생각
velog.io
[기술 면접] Spring IoC (Inversion of Control)와 DI (Dependency Injection)에 대하여
Spring을 사용하며 IoC와 DI라는 말을 굉장히 많이 들어봤고, 그것을 활용한다는 말을 굉장히 많이 들어왔는데 IoC와 DI가 정확히 무엇이고, 어떤 식으로 활용되는지는 자세히 알지 못한다. 오늘은
velog.io
'스파르타 내일배움캠프 > TIL(Today I learned)' 카테고리의 다른 글
키워드 기능 - 트러블 슈팅 (1) | 2025.06.20 |
---|---|
Backend와 Frontend 연결 방법 (1) | 2025.06.19 |
예약 동시성 제어 테스트 코드 (1) | 2025.06.17 |
에러코드 출력 관련 트러블 슈팅 (1) | 2025.06.16 |
Redisson 분산락 vs Redis 원자 연산 기반 동시성 제어 (2) | 2025.06.12 |