DI는 Dependency Injection의 줄임말이다. 쉽게 말해서 필요한 객체를 자동으로 주입받는 거다.
세 가지 어노테이션의 역할:
@Bean
직접 설정 클래스에서 등록하는 객체다. 메서드 위에 붙여서 "이 객체를 Spring Container에 올려"라고 지시한다.
언제 쓰는가: 라이브러리의 객체나 복잡한 설정이 필요한 객체를 등록할 때.
@Service
비즈니스 로직을 담당하는 객체다. 계산이나 처리 같은 핵심 기능을 여기에 넣는다.
@Repository
데이터베이스와 대화하는 객체다. DB에서 데이터 가져오기, 저장하기 같은 작업을 한다.
실제 흐름:
Controller -> @Autowired -> Service -> Repository -> Database
1. 컨트롤러가 비즈니스 로직 필요 -> Service 주입받음
2. Service가 DB 접근 필요 -> Repository 주입받음
3. Repository가 DB와 통신
이렇게 하면 뭐가 좋은가:
각 계층이 자기 일만 하기 때문에 코드가 안섞인다.
테스트가 쉬워진다. 모의 객체(Mock)로 바꾸기 편하다.
객체 관리가 편해진다. Spring이 생성하고 없앨 때까지 살펴본다.
코드 변경할 때 영향범위가 줄어든다. 한 곳만 수정하면 된다.
Spring Container라는 거:
Spring이 사용하는 객체들을 담아두는 상자라고 생각하면 된다.
@Bean, @Service, @Repository 어노테이션 붙은 클래스들이 여기에 등록된다.
필요할 때 @Autowired로 꺼내 쓴다.
'Camp > Spring' 카테고리의 다른 글
| [TIL] CREATE 응답: Entity에서 JSON까지 (0) | 2026.07.07 |
|---|---|
| [TIL]메모 앱 CREATE 요청 추적하기 (0) | 2026.07.06 |
| [TIL] - 데이터베이스 생성부터 CRUD 실습까지 (1) | 2026.06.30 |
| 1-12 Servlet 개념 간단 실습 (0) | 2026.06.29 |
| [TIL] 입문 Spring - 객체/인터페이스부터 라이브러리·프레임워크까지 (0) | 2026.06.25 |