본문 바로가기

dev/Spring

토비 스프링3, 7장에서 xml 벽을 만나다

반응형


사실 시작은 xjc 컴파일 부터였다.


sqlmap.xsd 를 xjc로 컴파일한 후에 생성되는 자바클래스와 팩토리 클래스를 시키는데로 했더니만 기존에 내 프로젝트의 패키지와 다른 경로로 파일이 생성되는 것이었다.


별 생각없이 생성된 클래스를 제자리(?)에 옮기기 위해 OS X 파인더로 복붙했고 파일 경로가 겹친다 어떻게 할래? 라는 대화상자를 만났다.


사건의 시작...


별 생각없이 대치를 눌렀는데... 헐 이녀석 정말 기존에 있던 springbook/user 이하 모든 폴더를 sprinbook/user/sqlservice 로 대치를 해버리는 것이었다. 즉, 기존 폴더는 싹 날아가고 sqlservice만 덩그러니...


command-z 눌러보고 휴지통 뒤져보고 해도 헛수고였다 ^_^;

아... 이게 맥이 타임머신 등으로 백업시스템은 잘 되어 있긴 한데 이런건 예상치 못했다 -_ㅠ


복붙할때 "대치" 버튼 누르기 전에 잘 생각하자...(ㅜㅜ) 윈도우랑 틀리다;


아무튼, 기존에 열심히 두들기며 이해했다고 착각하고 있는 소스들은 싹 날아갔지...

살짝 멘붕에 빠졌다.


일단 처음부터 다시 두들길 자신은 없었기 때문에 kenu라는 분이 github에 올려두신 소스를 받아서 살려보는 쪽으로 방향을 정했다.

그러면서 이클립스 프로젝트 구조에 대해서 다시 알게 되었다 -_-;


프로젝트를 생성하면 src, lib 등의 폴더를 구분해서 관리하는게 일반적이라는 것을.

각종 패키지와 클래스등은 src 아래에 생성해서 관리하고,

lib 아래 각종 jar 파일을 넣어두고 java build path에서 확인해보니 적당히 알아서 갱신되더라;


그동안 sts/plugin안에 때려박고 add external jars 로 지정했던 것이 얼마나 무식했던 짓인지 알게 되었다.(ㅋ)



그렇다고 이 에피소드와 함께 이틀동안 머리를 싸매게 했던 것이 xml 파일들이었다.


sql 구문들을 test-applicationContext.xml에서 beans 설정에서 분리해 내기 위해서

sqlmap.xml이라는 파일을 생성해서 키값들을 옮긴다고 생각했는데,

단순히 옮기는 것이 아니었다. 아직 공부하는 중이라 적당한 표현을 모르겠는데, 어쨌거나 xml 파일에서 필요한 부분을 파싱하기 위해 이런 태그를 사용하겠다 선언하고, 그 값들을 파싱하기 위한 절차들이 sqlmap.xsd를 만들고 xjc로 컴파일해서 클래스들을 생성했던 것이었다.


소스를 조금 더 세밀하게 보지 못해서

 test-applicationContext.xml 에서 sql 구문들이 sqlMap 프러퍼티 안에 맵, entry key 및 value로 구분되어 있던 것들을

sqlmap.xml로 옮기면서 sqlmap 태그 안에 sql 태그로 바뀐 것을 못 찾아서 그동안 무식한 에러들과 만났던 것이다;

xml 처럼 외부 파일에서 오타라도 생긴 것은 정말 찾아내기 힘들더라.



    
        
    

에서


 SQL querys 


너무 덤벙대면서 봐서 그런지 이것을 찾는데 그 쑈를 했다니 -_-;

github에 올라와있던 자료와 책 뒤에 부록CD 까지 뜯어 소스를 가져와서 하나하나 보던 끝에 찾았다 ㅠㅠ


꼭 월리를 찾아라 하는 기분?


어쨌거나 각 챕터별로 일단 구현->구조 개선->테스트로 확인 하는 방식은 여전하다. 이걸 보다보면 실제 프로젝트에서도 이렇게 하는지 여부가 궁금해진다고 할까.