728x90
DI 와 IoC
제어의 역전에서 기재한 내용임.
DI 와 DIP(Dependency Inversion Principle)
의존성 역전원칙
- 소프트웨어 아키텍처 원칙 중 하나로, 고수준 모듈이 저수준 모듈에 의해서는 안되고, 둘 다 추상화에 의존해야 한다는 원칙
- 세부사항(구현) 이 아닌 추상화(인터페이스) 에 의존해야함.
public interface BookRepository{
List<Book> findAll();
}
public class SqlBookRepository implements BookRepository{
public List<Book> findAll() {
// SQL 데이터베이스에서 책을 찾는 구현
return new ArrayList<>();
}
}
public class BookService {
private BookRepository bookRepository;
public BookService(BookRepository bookRepository) {
this.bookRepository = bookRepository;
}
public List<Book> getBooks() {
return bookRepository.findAll();
}
}
위 코드에서 BookService
는 BookRepository
라는 추상화된 인터페이스에 의존함.
실제 구현체는 SqlBookRepository
이지만, BookService
는 구체적인 구현 대신 추상화된 인터페이스에만 의존함.
이로 인해서 다른 유형의 BookRepository
구현체로 쉽게 교체할 수 있게 되어, 시스템의 유연성과 유지보수성이 향상됨.
728x90
'99클럽 TIL' 카테고리의 다른 글
99클럽 코테 스터디 23일차 TIL Spring AOP (0) | 2024.05.10 |
---|---|
99클럽 코테 스터디 22일차 TIL Spring 의존성 주입 (1) | 2024.05.09 |
99클럽 코테 스터디 20일차 TIL Spring 의존성 주입 (0) | 2024.05.07 |
99클럽 코테 스터디 19일차 TIL Spring 제어의 역전(IoC) (0) | 2024.05.06 |
99클럽 코테 스터디 19일차 TIL Spring POJO 기반의 구성 (0) | 2024.05.05 |
Comment