작성
·
220
1
안녕하세요 영한님.
우선 좋은 강의 잘 듣고 있음에 정말 감사드리며, 영한님의 첫 번째 강의를 수강하고 있는 jseo라고 합니다.
스프링 입문 스프링 부트의 20강에서 17분 대에 영한님께서 스프링의 장점 겸 스프링을 사용하는 이유를 설명해주신 부분에 궁금한 점이 있습니다!
제가 영한님의 강의를 들으며 이해하여 정리한 바는 아래와 같습니다.
스프링이 객체지향적인 설계가 좋다고 하지만 정확히 왜 좋은가?
객체지향 언어들은 인터페이스를 두고 구현체를 바꿔 끼울 수 있음 (이는 다형성의 특징 덕임), 헌데 스프링은 이 작업이 매우 편리하도록 구성되어 있음 → 다형성을 잘 활용하면 OCP를 양호하게 준수 할 수 있음 (일부 코드는 고치더라도 많은 범위의 코드를 고치지 않아도 됨)
물론 다른 객체지향 언어들이 사용하는 프레임워크에서도 이를 비슷하게 흉내낼 수 있겠지만, 인터페이스의 구현체를 바꿔끼우는 작업이 스프링만큼 편리할 수 없음
그 이유는 결과적으로 의존 관계에 있는 객체들을 변경 했을 때, 주입 지점으로 가서 코드를 직접적으로 바꾸는 작업이 수반될 수 밖에 없기 때문임 → 스프링은 그렇지 않음
SpringConfig라는 단일 객체의 역할이 스프링 빈 등록을 해주는 역할이고, 빈을 통해 의존 관계를 자동으로 설정할 수 있기 때문임 → 이것이 원활히 작동할 수 있는 이유는 스프링 컨테이너가 이를 지원해주기 때문임
그리고 제가 이 부분을 들으면서 든 의문은 아래와 같습니다.
근데… 의존 관계에 대한 수립을 스프링 컨테이너가 해주긴 하는데… 이 역시도 코드 상에서 싱글턴으로 객체를 생성해주고 관리해줄 수 있는 객체를 두고 해당 지점만 바꿔주면 되는 것이 아닌가..?
그리고 인터페이스를 지원하는 객체지향 언어들이면 구현체를 바꿔 끼우는 행위가 어렵지 않은 것도 사실 아닌가..?
스프링을 사용하는 이유에 대해서 말씀해주신 것이 스프링의 장점으로 확 와닿지 않는 것 같은데, 아직까지 제가 스프링 컨테이너가 해주는 역할에 대해 많이 모르고 있어서 그런 것일까요..?
혹은, 이후 영한님의 다른 강의들을 들으면 해결될 수 있는 부분일까요?
답변 2
1
질문하고 보니 답을 스스로 기술한거랑 다름이 없었네요 ㅎㅎ...
얼추 스프링 컨테이너를 이해하는 것이 정말 중요하겠다는 생각이 드네요
로드맵 상 다음 강의를 통해 스프링 컨테이너를 이해해보면서 스프링과 스프링 부트를 활용할 수 있도록 정진해보겠습니다!