학습 목표
- DI 가 IoC 의 구현 방식임을 안다
@Service 와 @Autowired 의 역할을 안다
- 전 차시 코드와 비교해 어디가 줄었는지 짚을 수 있다
1. IoC vs DI
| 용어 | 의미 |
| IoC | 객체 제어권을 외부에 위임 (발상) |
| DI | 의존성을 외부에서 주입 (IoC 의 구현) |
2. 핵심 어노테이션 두 개
@Service ← Bean 등록
public class OrderService {
@Autowired ← 자동 주입
private MessageSender sender;
}
3. 등록 어노테이션
| 어노테이션 | 계층 |
@Component | 일반 Bean |
@Service | 비즈니스 로직 |
@Repository | 데이터 접근 |
@Controller | 웹 진입점 |
4. 주입 3 가지 방식
- 필드 주입 — 간단, 학습용 OK
- 생성자 주입 — 권장 (final, 테스트 용이)
- setter 주입 — 가변 의존성
5. v1 → v2
전 차시 (수동)
// main
MessageSender s
= new GmailSender();
new OrderService(s);
이번 차시 (Spring)
@Service
class OrderService {
@Autowired
MessageSender sender;
}
학습 확인 체크리스트
- DI 와 IoC 의 관계를 한 문장으로 말할 수 있다
@Service 와 @Autowired 의 역할을 안다
- 주입 3 가지 방식을 안다