요구 사항 인터뷰를 들은 것은 이번주 월요일(11월 6일) 입니다. 그리고 오늘은 목요일(11월 9일)입니다.

월요일에 신나서 코딩을 한답시고 쭉~~~했습니다. 시작하자 마자 의문점이 생겼습니다. 'Member를 가져오려면 먼저 저장이 되어 있어야 되는것 아닌가?' 였습니다. 그럼 먼저 Member 객체의 정보를 DB에 저장하는 것 부터 만들어야 겠구나.. 라고 결론 지었습니다.

그렇게 생각을 정리하고 먼저 Eclipse에서 프로젝트를 생성하기 시작했습니다.

1140880315.bmp프로젝트 이름은 addressbook으로 생성하고 소스폴더로 src와 test를 만들었습니다.

그리고 xml configuration metadata 파일들을 한 곳에 두려고 conf라는 폴더를 만들었으며 필요한 jar 파일들을 절대 경로가 아니라 lib 이라는 폴더에서 가져 가도록 상대 경로를 사용할 수 있게 일단 폴더만 만들어 두었습니다.

이렇게 폴더만 만들어 둔 상태에서 무엇을 해야 할까 고민을 하던 중 일단 src 밑에 Member.java 라는 도메인 역할을 하는 클래스 부터 만들기로 생각하고 그 메소드를 test할 MemberTest.java 파일을 test 폴더 밑에 net.webapp2.member에 만들었습니다.

그렇게 MemberTest.java와 Member.java 파일을 만들고 나서 MemberRepositotyTest.java 파일을 생성하고 testAdd() 메소드를 추가하였습니다.

Agile java 책에서 배운 TDD를 쪼~금 이나마 적용해 보았는데 역시나 적응이 쉽지 않았습니다.

일단 이렇게 껍데기를 만드는데도 상당한 시간이 소모되었습니다. 제일 시간이 많이 소요된 시점은 MemberRepositoryTest 클래스를 만드는 부분이였습니다. test 메소드 후에 test를 하면서 발생했던 트랜잭션을 롤백 해주는 클래스인 AbstractTransactionalDataSourceSpringContextTests 클래스를 상속받아야 했습니다. 이 클래스는 org.springframework.test 패키지에 있으며 이 패키지는 spring-mock.jar 파일에 있습니다. 이 파일은 "spring을 설치한 폴더"\dist 안에 있습니다.

1202077778.bmp

상대경로로 Jar 파일 추가하기

dist폴더 안에 있는 jar 파일을 eclipse의 프로젝트에 추가하는 방법은 프로젝트를 우클릭->맨 아래 프로퍼티s-> Java Build Path에서 Add External Jar File을 클릭하여 추가할 수 있습니다. BUT!!! 이렇게 jar파일을 추가하면 절대 경로로 참조하게 되어 이 프로젝트를 다른 개발자들과 공유를 했을 때 문제가 생기게 됩니다. 따라서 lib폴더로 jar파일을 복사 해두고 Java Build Path에서 Add Jar Field을 클릭하여 addressbook 프로젝트의 lib폴더에 복사 해둔 jar파일을 추가합니다. 이렇게 하면 lib 폴더 안에 있는 jar 파일을 참조하게 되기 때문에 이 프로젝트를 다른 개발자들과 공유를 하더라도 lib폴더에 있는 jar파일도 같이 공유가 되고 lib 폴더를 참조하게 되어 있기 때문에 문제가 발생하지 않습니다.

1105273732.bmp

ps : google code의 springkorea 프로젝트의 svn에 올려 두었습니다. http://springkorea.google.com/svn 에서 checkout 받으실 수 있습니다.