토비의 스프링 부트 - 이해와 원리/섹션5 - 독립 실행형 스프링 애플리케이션
의존 오브젝트 DI 적용
DOGvelopers
2024. 10. 6. 20:50
반응형
결론 및 요약
스프링 컨테이너를 이용하여 의존성 주입(Dependency Injection, DI)을 구현하는 방법을 학습했습니다. HelloController
와 SimpleHelloService
간의 의존 관계를 인터페이스를 통해 관리하고, 스프링 컨테이너가 이를 자동으로 처리하여 개발자가 의존성을 명시적으로 관리하지 않아도 되도록 만들었습니다.
주요 내용 요약
인터페이스 도입 및 의존성 분리:
- 기존
SimpleHelloService
클래스는 인터페이스를 구현하지 않았으나, 이를HelloService
라는 인터페이스로 추상화하였습니다. HelloService
인터페이스는sayHello
메소드를 정의하고,SimpleHelloService
는 이를 구현하는 방식으로 변경하였습니다.- 이렇게 인터페이스를 도입하면,
HelloController
는SimpleHelloService
클래스에 직접 의존하지 않고HelloService
인터페이스에 의존하게 됩니다.
- 기존
스프링 컨테이너와 의존성 주입:
HelloController
는 더 이상SimpleHelloService
객체를 직접 생성하지 않고, 생성자 파라미터로HelloService
타입의 객체를 주입받습니다.- 스프링 컨테이너는
SimpleHelloService
와HelloController
를 빈으로 등록하고, 컨테이너가 자동으로HelloService
객체를 생성하여HelloController
에 주입합니다. - 이를 통해 코드 레벨에서 의존성을 제거하고, 스프링이 의존성 관리 및 주입을 자동으로 처리하도록 구성할 수 있습니다.
DI 적용을 통한 유연한 설계:
- 의존성 주입은 코드의 유연성을 높여줍니다. 만약
SimpleHelloService
대신 다른 구현체를 사용하고 싶다면,HelloService
인터페이스를 구현한 새로운 클래스를 만들어도HelloController
의 코드를 수정하지 않고, 스프링 컨테이너에서 빈만 교체하면 됩니다. - 스프링 컨테이너는 DI를 통해 필요한 객체를 자동으로 생성하고 주입하여, 코드의 변경 없이도 유연하게 의존성을 관리할 수 있습니다.
- 의존성 주입은 코드의 유연성을 높여줍니다. 만약
결론:
스프링의 DI는 객체 간의 의존성을 자동으로 관리해주는 강력한 기능입니다. 이를 통해 코드의 결합도를 낮추고, 확장성과 유지보수성을 높일 수 있습니다.
반응형