728x90
반응형
1. 제어의 역전 (Inversion of Control, IoC):
제어의 역전은 소프트웨어 컴포넌트 사이의 제어 흐름을 개발자가 아닌 프레임워크나 컨테이너가 관리하도록 하는 디자인 원칙입니다. 기존의 제어 흐름은 개발자가 코드를 작성하여 다른 컴포넌트나 모듈을 호출하고 관리하는 방식이었습니다. 하지만 IoC에서는 이와 반대로, 개발자가 코드를 작성할 때 컨테이너가 실행 시점에 제어 흐름을 결정하고 관리합니다.
2. 의존성 주입 (Dependency Injection, DI):
의존성 주입은 객체 간의 의존성을 외부에서 주입하는 디자인 패턴입니다. 객체가 자신이 필요로 하는 의존성을 직접 생성하거나 관리하지 않고, 외부에서 주입받아 사용합니다. 이를 통해 객체 간의 결합도를 낮추고 유연성을 향상시킵니다. 주로 생성자 주입, 설정 파일을 통한 주입, 메서드 주입 등의 방식으로 의존성을 주입합니다.
// 의존성 주입을 사용하지 않은 경우
class NotificationService {
EmailService emailService;
NotificationService() {
emailService = new EmailService(); // 의존성을 직접 생성
}
void sendNotification(String message) {
emailService.sendEmail(message);
}
}
// 의존성 주입을 사용한 경우
class NotificationService {
EmailService emailService;
NotificationService(EmailService emailService) {
this.emailService = emailService; // 외부에서 의존성 주입
}
void sendNotification(String message) {
emailService.sendEmail(message);
}
}
728x90
반응형
'개발일기 > Spring' 카테고리의 다른 글
[Spring]싱글톤 컨테이너 (0) | 2024.03.18 |
---|---|
[Spring]BeanFactory , ApplicationContext (0) | 2024.03.18 |
[Spring] ApplicationContext (0) | 2024.03.15 |
객체지향5원칙 SOLID (0) | 2024.03.15 |
[Spring] Aop예제 (1) | 2024.03.05 |