본문 바로가기

dev/Spring

스프링 공부하기 - 토비의 스프링 3

반응형

인터넷 환경이 발전하면서 상당수 응용프로그램들이 인터넷 및 클라우드 환경 아래로 옮겨졌다.


web 기반 개발이라는 것도 개념이 복잡해져서

비전공자가 공부하기에는 산더미 같은 난관을 해쳐나가야 한다.


우연한 기회에 토비의 스프링3이라는 책을 공부하기 시작했는데,

이 책은 어디까지나 기존 개발에 대한 지식이 있는 사람을 대상으로 하는 책인듯 하다.


적어도 java, mysql 등에 대한 기본 지식이 있어야 시작할 수 있다.

뭐 적어도 최소라는 의미일 것이다.


아무튼 opentutorials.org java 강좌 한번 읽은 정도로는 수없이 많은 시행착오를 거쳐야 했다.


1장에서는 UserDao 를 작성하며 기본 db를 통한 입출력을 기본으로 하며 리팩토링이라는 개념으로, method를 추출하며 이야기가 진행되는데, 공부라는 것이 눈으로 보면 이해가 되는 것 같지만 실제 해보지 않고서는 어림도 없는 소리이다.


일단 mac 환경에서 그래서 직접 해보기로 했는데, 다음과 같은 과정을 거쳤다.


mysql을 설치했다.

spring tools suite 를 설치했다.

mysql로 테스트용 db를 생성했고, 책에 있는데로 기본 테이블을 만들었다.


첫번째 예제를 두들겼고, 도무지 빨간색 느낌표들이 사라지지 않았다.

아직 실행은 해보지도 못했다 -_-

여기까지도 수없이 구글 검색을 통해서 왔지만,

이것이 첫번째 난관이었다.

한참을 들여다 보고는 알게된 것이,


첫번째 user.java와 UserDao.java의 경로가 다르다는 것.

springbook.user.domain, spring.user.dao;로 차이가 있었는데

이를 싹 무시하고 별도로 Create New Java project로 생성했던 것이다.


user.java의 springbook.user.domain은 spring/user/domain/src/user.java로

UserDao.java의 springbook.user.dao은 spring/user/dao/src/UserDao.java로 만들어야 하는데,

각각 New Java project로 하다보니

springbook.user.domain/spring/user/domain/src/user.java

springbook.user.dao/spring/user/dao/src/UserDao.java로 위치하고 있었던 것이다.


그렇다면, 
springbook/user 안에 각각 domain/src/user.java, dao/src/UserDao.java로 위치하게 하면
분명히 package로 각각의 파일을 불러와서 참조할 것이라 생각하고,
도무지 STS project explorer에서는 헷갈려서 그냥 파인더로 파일을 옮겼다.

그러나 여전히 문제는 해결되지 않았고,
결국 import springbook.user.domain.User; 로 UserDao.java 안에서 user.java를 import 하는 것으로 두 파일간 연결고리를 지어주게 되었다.


그 다음, 테스트용 main() method를 실행해보려 했는데 


The selection cannot be launched, and there are no recent launches”


진정한 의미로(?) 첫번째 에러 메세지를 만났다.

구글 검색으로 나오는 결과는 stackoverflow 등의 사이트에 나온 것들인데

eclipse 에서 android project 실행하려는데 안된다고 하는 거였다.


나는 spring tools suite인데?

뭐 이것도 eclipse를 바탕으로 만든거라고 하기는 하는데 어쨌거나

수많이 달린 답변들 중에 해결책이 있을 것이라 생각하고

일단 eclipse도 설치했다. -__-;


그래도 안되는 것은 매한가지.


이번에는 구글이 살려주었다.
GitHub에 누군가 1장 소스파일을 올려두었던 것.
(사실 이 파일 구조를 보고 첫번째 문제도 정확하게 찾게 되었지만ㅋ)

책 뒤에 CD 를 넣고 소스를 실행해보면 간단하겠지만 어차피 맥북에 CD도 없고 -_-;

아무튼 
여기서 main() method는 별도로 클래스 파일을 만들어서
실행해야 함을 알았다.

이제 실행은 되는데
수없이 많은 빨간 줄을 만나야 했다.

com.mysql.jdbc.Driver
db connection 등 모두가 문제였다.

그러나 역시 구글은 위대하다 -__________-;

누군가 stackoverflow에 com.mysql.jdbc.Driver 관련 질문을 올리면서 자기 소스를 올려놨는데
이를 통해서 connection c = DriverManager.getConnection("jdbc:mysql://localhost/springbook", "spring", "book");의 의미가 mysql 데이터베이스에 계정spring, 비번book으로 접근하라는 것을 알았다.

소스만 볼때는 그렇구나 하고 넘어갔지만 -_-;
mysql 사용법 관련 블로그나 사이트 등을 통해서 만든 테스트db는 그게 아니었으니 연결이 될 턱이 있나.

(사실 com.mysql.jdbc.Driver 부터 문제였다 ㅋㅋㅋㅋ)

여기까지 오는데 벌써 sqlExplorer도 설치했고 mysqlWorkBench 등등 뭐가 하나씩 계속 늘어났다.
com.mysql.jdbc.Driver는 java build path/libraries/add external jars로 mysql-connector-java-5.1.25-bin.jar를 추가해주는 것으로 해결했다.


그리고 대망의 첫 예제 실행성공!


이렇게 해서 사용자 정보의 등록과 조회가 되는 초간단DAO와 테스트용 메소드까지 완성했다. 그런데 지금 만든 UserDao 클래스 코등에는 사실 여러 가지 문제가 있다. ... - 본문 중 -


초간단이란 말이지... OTL