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

꽓꼵이님의 프로필 이미지

작성한 질문수

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

스프링 JdbcTemplate

스프링 JdbcTemplate강의를 듣고 궁금한 점이 생겨 질문드립니다.

작성

·

121

0

[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)

[질문 내용]
다른 강의의 내용에서 스프링 빈에 dataSource와 JdbcTemplate이 등록이 되어 있는 내용을 보았습니다.

그래서 dataSource를 통해 DB와 커넥션을 만드는 부분에서는 새로운 객체를 생성하지 않고 dataSource를 받아와 의존성 주입을 받았는데 여기에서는 JdbcTemplate의 새로운 객체를 생성하여 의존성 주입을 받는데 그러면 싱글톤에서 위배가 되는것 아닌가요?

다른 강의에서는 SQL을 DB로 사용하였습니다. 혹시 DB의 차이에 따라 위와 같이 새로운 JdbcTemplate의 객체를 생성할 수 있는 걸까요?

답변 1

0

김영한님의 프로필 이미지
김영한
지식공유자

안녕하세요. 꽓꼵이님

JdbcTemplate을 직접 주입받는 대신 DataSource를 주입받는 이유는 다음과 같습니다:

1. 유연성:

- DataSource를 주입받으면 필요에 따라 다양한 방식으로 JdbcTemplate을 구성할 수 있습니다.

- 예를 들어, 특정 설정이 필요한 경우 JdbcTemplate 생성 시 추가 옵션을 설정할 수 있습니다.

2. 테스트 용이성:

- DataSource를 주입받으면 테스트 시 실제 DataSource 대신 mock DataSource를 쉽게 주입할 수 있습니다.

- 이는 단위 테스트를 더 쉽게 작성할 수 있게 해줍니다.

3. 재사용성:

- 동일한 DataSource를 사용하여 여러 개의 JdbcTemplate 인스턴스를 생성할 수 있습니다.

- 각 인스턴스는 다른 설정을 가질 수 있습니다.

이러한 이유들로 인해, 스프링에서는 관례적으로 JdbcTemplate을 직접 주입받기보다는 DataSource를 주입받고 이를 이용해 JdbcTemplate을 생성하는 방식을 선호합니다.

관련해서 이후에 스프링 DB1, 2 강의를 들어보시면 이런 관례들이 어떻게 사용되는지 더 자세히 이해하실 수 있을거에요.
추가로 다음 내용도 읽어보시면 도움이 되실거에요.

https://www.inflearn.com/community/questions/1320853

감사합니다.