인프런 커뮤니티 질문&답변
findById와 findByName 차이점
작성
·
201
0
jdbc.Template.query 에서 인자값을 id값은 인자값으로 안넘겨주고 name은 넘겨줬는데
조건 쿼리에서 ? 에 해당하는 값을 넘겨줘야 하는거 아닌지요? 왜 findById는 안넘겨줬나요?
또한가지는 JdbcTemplateMemberRepostory 에서
public JdbcTempateMemberRepository(Datasource datasource) 부분에서 @Autowired선언은 생성자 하나면 안해줘도 된다고 해서 안해주셨고..
그런데 자바코드로 configuration 해주는 SpringConfig소스에서 보면 왜 그곳에서 또 DataSource를 @Autowired해주고 그 datasource 입력받은 값으로
@Bean
public MemberRepository memberRepository(){
이하부분에서 return new JdbcTeamplateRepostiry(datasource)
이부분에 datasource로 인자로 넣어줬나요? 안넣어주고 원래 JdbcTemplateMemberRepository 부분에서 이미 autowired되어있는데 말이죠..이해가 안가네요
답변 1
0
안녕하세요. gusqhr999님
jdbc.Template.query 에서 인자값을 id값은 인자값으로 안넘겨주고 name은 넘겨줬는데
조건 쿼리에서 ? 에 해당하는 값을 넘겨줘야 하는거 아닌지요? 왜 findById는 안넘겨줬나요?
-> 9:30을 참고해주세요^^
두번째 질문하신 부분은 dataSource를 외부에서 주입할 수 있다는 것을 보여드리는 코드입니다.
지금은 SpringConfig에서 dataSource를 받아서 JdbcTemplateMemberRepository에 직접 주입하고 있습니다. 이렇게 직접 주입해도 되고, 말씀하신 것 처럼 직접 주입 받지 않고, @Autowired로 주입 받아도 됩니다. 여러가지 방법이 가능합니다.
그런데 여기서 JdbcTempalteMemberRepository를 @Bean을 사용해서 수동으로 스프링 빈으로 등록하는데, dataSource가 생성자의 필수 파라미터 이기 때문에 SpringConfig에서는 dataSource를 꼭 받아와서 넣어주어야 합니다.
감사합니다.





