Servlet 기반 -> Spring 기반으로 전환 후 테스팅 오류 No DataSource specified

2017-08-12 18:53

안녕하세요 재성님 재성님의 동영상 강의를 토대로 처음에 Servlet 기반으로 구축한 프로젝트가 있었는데요. 이후에 Spring 의 과정 영상을 몇개 학습한 후, 이제막 Spring 기반으로 프로젝트를 리팩토링 하고 있습니다.

현재 과정이 컨넥션을 DataSource 를 기반으로 컨넥션 풀링 진행까지 해보았는데요. DI 과정을 확실히 이해 못해서 인지 모르겠지만 현재 에러에 몇일째 부딪히고 있습니다.

빨리 스프링 설정이 끝나야지만, 얼마 후에 있을 공모전에 기능 및 다른 리팩토링을 진행할 수가 있어서.. 구글링을 했지만 해결이 안돼서 여기에 질문을 한번 드려봅니다. ㅠ

<컨넥션풀링> <컨텍스트 설정> <TEST 소스> <TEST 중 실패한 메소드> <에러 로그 - IllegalArgumentException : No DataSource specified>

Q. 혹시 Context 설정에 TEST 클래스 빈 설정 또한 추가 해주어야 하는 건가요?

Q. Board 객체는 Project 객체와 의존성을 가지고 있습니다. ( 프로젝트 페이지 안에 보드가 존재 ) 혹시 DI 설정을 해주지 않아서 인지??

Q. DataSource 를 jdbcTemplate 에서 get 해서 각각의 DAO 에 jdbcTemplate 객체를 선언하여 initialize 하고 있는데 이 방법이 잘못된 것일까요??

4개의 의견 from SLiPP

2017-08-13 21:16

Q. 혹시 Context 설정에 TEST 클래스 빈 설정 또한 추가 해주어야 하는 건가요?
Test 코드에서는 @Autowired를 통해 DI한 DAO를 직접 사용하면 됩니다. 위 코드를 보면 @Before에서 직접 인스턴스를 생성하고 있는데요. Spring을 통해 생성한 인스턴스를 사용하면 됩니다.

Q. Board 객체는 Project 객체와 의존성을 가지고 있습니다. ( 프로젝트 페이지 안에 보드가 존재 ) 혹시 DI 설정을 해주지 않아서 인지??
이건 정확히 어떤 의미인지 잘 모르겠네요.

Q. DataSource 를 jdbcTemplate 에서 get 해서 각각의 DAO 에 jdbcTemplate 객체를 선언하여 initialize 하고 있는데 이 방법이 잘못된 것일까요??
더 좋은 방법은 JdbcDaoSupport를 상속 받아 구현하면 좀 더 편하게 구현할 수 있어요. Spring + JdbcTemplate + JdbcDaoSupport examples 문서의 JdbcDaoSupport 상속하는 코드 참고해서 구현해 보세요.

2017-08-13 22:36

@자바지기 No dataSource Specified 문구는 어디 부분이 잘못되어 발생한 것일까요 ㅠㅠ crud 테스트는 돼었는데 getList() 만 안된 이유를 모르겠습니다.. 기존 서블릿기반으로 테스트 소스 작성했을 때는 잘 작동 되던 거였거든요

2017-08-15 10:38

@임우철 저 코드만 봐서는 저도 어느 부분이 문제인지 정확한 원인을 파악하기 쉽지 않네요. 지금 구현한 코드 보다 간단히 구현할 수 있는데요. 지금은 상당히 복잡하게 구현되어 있어 원인 파악하기 쉽지 않네요.

앞에서 공유한 문서 참고해 기반 작업 다시 한번 하는 것이 좋을 것 같아요.

의견 추가하기

연관태그

← 목록으로