99클럽 코테 스터디 21일차 TIL Spring DI 와 IoC, DI와 DIP
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();
    }
}

위 코드에서 BookServiceBookRepository 라는 추상화된 인터페이스에 의존함.

실제 구현체는 SqlBookRepository 이지만, BookService 는 구체적인 구현 대신 추상화된 인터페이스에만 의존함.

이로 인해서 다른 유형의 BookRepository 구현체로 쉽게 교체할 수 있게 되어, 시스템의 유연성과 유지보수성이 향상됨.

728x90