인프런 커뮤니티 질문&답변

bigpel66님의 프로필 이미지
bigpel66

작성한 질문수

스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술

순수 JDBC

안녕하세요 영한님 질문 있습니다.

작성

·

220

1

안녕하세요 영한님.

우선 좋은 강의 잘 듣고 있음에 정말 감사드리며, 영한님의 첫 번째 강의를 수강하고 있는 jseo라고 합니다.

 

https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-%EC%9E%85%EB%AC%B8-%EC%8A%A4%ED%94%84%EB%A7%81%EB%B6%80%ED%8A%B8/unit/49594?category=questionDetail&tab=community

스프링 입문 스프링 부트의 20강에서 17분 대에 영한님께서 스프링의 장점 겸 스프링을 사용하는 이유를 설명해주신 부분에 궁금한 점이 있습니다!

 

제가 영한님의 강의를 들으며 이해하여 정리한 바는 아래와 같습니다.

스프링이 객체지향적인 설계가 좋다고 하지만 정확히 왜 좋은가?

객체지향 언어들은 인터페이스를 두고 구현체를 바꿔 끼울 수 있음 (이는 다형성의 특징 덕임), 헌데 스프링은 이 작업이 매우 편리하도록 구성되어 있음 → 다형성을 잘 활용하면 OCP를 양호하게 준수 할 수 있음 (일부 코드는 고치더라도 많은 범위의 코드를 고치지 않아도 됨)

물론 다른 객체지향 언어들이 사용하는 프레임워크에서도 이를 비슷하게 흉내낼 수 있겠지만, 인터페이스의 구현체를 바꿔끼우는 작업이 스프링만큼 편리할 수 없음

그 이유는 결과적으로 의존 관계에 있는 객체들을 변경 했을 때, 주입 지점으로 가서 코드를 직접적으로 바꾸는 작업이 수반될 수 밖에 없기 때문임 → 스프링은 그렇지 않음

SpringConfig라는 단일 객체의 역할이 스프링 빈 등록을 해주는 역할이고, 빈을 통해 의존 관계를 자동으로 설정할 수 있기 때문임 → 이것이 원활히 작동할 수 있는 이유는 스프링 컨테이너가 이를 지원해주기 때문임


그리고 제가 이 부분을 들으면서 든 의문은 아래와 같습니다.

근데… 의존 관계에 대한 수립을 스프링 컨테이너가 해주긴 하는데… 이 역시도 코드 상에서 싱글턴으로 객체를 생성해주고 관리해줄 수 있는 객체를 두고 해당 지점만 바꿔주면 되는 것이 아닌가..?

그리고 인터페이스를 지원하는 객체지향 언어들이면 구현체를 바꿔 끼우는 행위가 어렵지 않은 것도 사실 아닌가..?

 

스프링을 사용하는 이유에 대해서 말씀해주신 것이 스프링의 장점으로 확 와닿지 않는 것 같은데, 아직까지 제가 스프링 컨테이너가 해주는 역할에 대해 많이 모르고 있어서 그런 것일까요..?

혹은, 이후 영한님의 다른 강의들을 들으면 해결될 수 있는 부분일까요?

답변 2

1

bigpel66님의 프로필 이미지
bigpel66
질문자

질문하고 보니 답을 스스로 기술한거랑 다름이 없었네요 ㅎㅎ...

얼추 스프링 컨테이너를 이해하는 것이 정말 중요하겠다는 생각이 드네요

로드맵 상 다음 강의를 통해 스프링 컨테이너를 이해해보면서 스프링과 스프링 부트를 활용할 수 있도록 정진해보겠습니다!

0

안녕하세요. bigpel66님, 공식 서포터즈 David입니다.

의문을 가지신 부분을 직접 구현해도 좋지만 스프링에서는 이미 다 구현해 놓았습니다.

따라서 직접 싱글톤 컨테이너를 구현하는 시간에 비즈니스 로직을 작성하는데 더 많은 시간을 들일 수 있습니다.

의존관계 주입 외에도 스프링이 웹 애플리케이션을 만들기 위해 지원하는 부분들이 상당히 많습니다.

스프링 핵심 원리 기본편, 스프링 MVC 등과 같은 강의를 들어보시고 관련하여 의문이 드시는 부분들이 있으시다면 편히 질문 부탁드립니다:)

감사합니다.

bigpel66님의 프로필 이미지
bigpel66

작성한 질문수

질문하기