본문 바로가기

카테고리 없음

스프링 루 첫걸음: 10분만에 내 웹 어플리케이션 만들기

(원문소스http://static.springsource.org/spring-roo/reference/html/intro.html#intro-first-steps)

1.5. First Steps: Your Own Web App in Under 10 Minutes

1.5. 스프링 루 첫걸음: 10분만에 당신만의 웹앱만들기 
 

이제 당신은 루를 인스톨했어. 이제 루를 가지고 몇 분 더 써서 엔터프라이즈 어플리케이션을 만들어보자.


이 어플리케이션의 목표는 그냥 루를 시도해보는거야. 우리는 이 단계들이 어떻게 이루어지는지 지금 설명하지 않을거야, 하지만 걱정마 다음장인 루 시작하기: 튜토리얼
에서 설명할거니까.

우리는 너와 하나하나 같이 해봄으로써 루의 유용한 기능들을 가르쳐 줄거야. 일단 다음 명령어를 쳐보는걸로 시작하자고:

$ mkdir ten-minutes
$ cd ten-minutes
$ roo
    ____  ____  ____  
   / __ \/ __ \/ __ \ 
  / /_/ / / / / / / / 
 / _, _/ /_/ / /_/ /  
/_/ |_|\____/\____/    W.X.Y.ZZ [rev RRR]


Welcome to Spring Roo. For assistance press TAB or type "hint" then hit ENTER.
roo> hint
Welcome to Roo! We hope you enjoy your stay!

Before you can use many features of Roo, you need to start a new project.

To do this, type 'project' (without the quotes) and then hit TAB.

Enter a --topLevelPackage like 'com.mycompany.projectname' (no quotes).
When you've finished completing your --topLevelPackage, press ENTER.
Your new project will then be created in the current working directory.

Note that Roo frequently allows the use of TAB, so press TAB regularly.
Once your project is created, type 'hint' and ENTER for the next suggestion.
You're also welcome to visit http://forum.springframework.org for Roo help.


"hint" 명령어의 출력물인 가이드를 잘 읽으면 다음에 무엇을 해야할지 알수있을거야. 
같이 해보자:
 

roo> project --topLevelPackage com.tenminutes
Created /home/balex/ten-minutes/pom.xml
Created SRC_MAIN_JAVA
Created SRC_MAIN_RESOURCES
Created SRC_TEST_JAVA
Created SRC_TEST_RESOURCES
Created SRC_MAIN_WEBAPP
Created SRC_MAIN_RESOURCES/META-INF/spring
Created SRC_MAIN_RESOURCES/META-INF/spring/applicationContext.xml
roo> hint
Roo requires the installation of a JPA provider and associated database.

Type 'jpa setup' and then hit TAB three times.
We suggest you type 'H' then TAB to complete "HIBERNATE".
After the --provider, press TAB twice for database choices.
For testing purposes, type (or TAB) HYPERSONIC_IN_MEMORY.
If you press TAB again, you'll see there are no more options.
As such, you're ready to press ENTER to execute the command.

Once JPA is installed, type 'hint' and ENTER for the next suggestion.


이제 금방 너는 실행가능한 Maven 기반의 프로젝 설정을 했다구. 근데 JPA를 설정해서 더 쓸만하게 만들어보자.

시간 형평상, 나는 너가 아래와 같이 다른 줄에 쳐야할 커맨드를 그냥 같이 넣었어. 명심해 쉘을 쓸때 탭키를 써버릇하라고 그럼 이러한 명령어를 타입하는 시간을 줄일수 있을거야:

roo> jpa setup --provider HIBERNATE --database HYPERSONIC_IN_MEMORY
roo> hint
roo> entity jpa --class ~.Timer --testAutomatically
roo> hint
roo> field string --fieldName message --notNull
roo> hint web mvc
roo> web mvc setup
roo> web mvc all --package ~.web
roo> selenium test --controller ~.web.TimerController
roo> perform tests
roo> perform package
roo> perform eclipse
roo> quit
$ mvn tomcat:run

"perform" 명령어는 "mvn"을 쓰는 명령어 프롬프트를 쉽게 대체해주지. 우리가 탭 자동완성의 혜택을 주려고 루안에서 그렇게 만들었어.  하지만 너가 m2eclipse 플러그인을 쓴다면 "perform eclipse" 명령어를 건너뛸수도 있어. 또 만일 STS (SpringSource Tool Suite)을 쓰고있다면 자동으로 m2eclipse 설치해주니까 "perform eclipse" 명령어를 쓸 필요도 없어져.
 

사실 STS 사용자라면 IDE에서 File > New > Spring Roo 메뉴 옵션을 선택하고 각단계를 완료하면 그냥 바로 루 프로젝트를 시작할수도 있지. 이렇게 하면 루쉘보기(Roo Shell View)가 STS안에서 열리고 거기에 남은 명령어들을 칠수있어.

이제 톰캣을 로드했으니 셀레니움(Selenium) 테스트를 돌려보자. 너는 ten-minutes 디젝토리내에서
새 명령어창을 로딩하고 mvn selenium:selenese 를 실행하면 되


생성된 Selenium 테스트를 돌려보려면 파이어폭스 브라우저로 해야해.

http://localhost:8080/tenminutes 쳐서 아래의 사진과 비슷한 너의 새 웹 어플리케이션을 방문해봐. 

당연히 이 짧은 10분 테스트에서 우리는 루가 제공해주는 수많은 기능을 건너뛰었어.
그리고 너가 어플리케이션을 커스터마이즈 할수있는지 자세히 들여다 보지도 않았고.
우린 그냥 루가 작동한다는것과 
 이 짧은 시간안에 어플리케이션을 만들수있다는 것 보여주고 싶었어.
루 시작하기: 튜토리얼 챕터는 더 깊이 있게 어플리케이션을 만드는 과정을 살펴볼거야, IDE 사용하는 법 등등을 포함해서 말이지.


1.6. 루 샘플 디벼보기

이제 ten minute test를 통해 너의 첫 어플리케이션을 만들어봤어. 루가 어떻게 작동하는지 대략 알수있었을거야. 너가 루를 배우는것을 도우려고 우리는 새 어플리케이션을 만드는데 쓰이는 몇가지 샘플 스크립트를 넣어뒀어. 이 샘플 스크립트는 너의 %ROO_HOME%/samples 디렉토리에서 찾아볼수있어. 그냥 다음 명령어 형식을 써서 샘플스크립트를 실행할수도 있지:

$ mkdir sample
$ cd sample
$ roo
roo> script --file filename.roo
roo> quit
$ mvn tomcat:run

위의 filename.roo는 아래 리스트중 하나로 대체하면 되 (TAB자동완성으로 얻어올수있어):

  • clinic.roo: 이 펫클리닉 샘플 스크립트는 가장 이해하기 쉬워. 큰 수의 엔티티, 컨트롤러, 셀레니움 테스트와 동적인 찾기(finder)를 포함하고 있고 Log4j를 설정해두어서 엔티티간의 관계나 원소의 갯수를 확인할수있어 .

  • vote.roo: 투표 샘플 스크립트는 스프링원 유럽 2009 현장에서 라이브로 만들었던 거야.로젝 히스토리 섹션에 자세히 알수있어. 이건 멋진 예제야 왜냐하면 매우 작고 딸랑 두개의 엔티티만 가지고 있으니까 또한 스프링 시큐리티의 사용예를 확인할수있도 있지.

  • wedding.roo: 웨딩 초대장 샘플 스크립트는 웨딩 초대장 튜토리얼의 결과물이야. 혹시 다른 루 튜토리얼을 찾고있다면 이 (블로그 엔트리와 연결되어있는) 샘플 스크립트가 좋은 선택이 될거야. 이 프로젝은 셀레니움 테스트, 동적 찾기(finders)와 Log4j 설정를 포함하고있어.

  • expenses.roo: 비용 샘플스크립트는 스프링 루로 Google Web Toolkit (GWT) 어플리케이션을 만들어줘. 이걸로 너는 루 1.1에 추가한 새 GWT scaffolding을 볼수있을거야.

  • pizzashop.roo: 피자상점 샘플 스크립느는 루의 JPA composite primaty key들과의 루의 통합을 확인해볼수있어. 이건 JSON을 통해 접근하는 headless 어플리케이션을 만들어주지.
    (스프링 MVC REST 통합을 통해 사용할수있어). 여기에 웹 UI를 더하려면 간단히 web mvc all 명령어를 실행해주면되. 이 어플리케이션은 여기 튜토리얼에서 자세히 설명해두었어.