본문 바로가기

카테고리 없음

2.4. 스프링루 시작하기 - Step 1: Starting a Typical Project

2. 스프링 루 시작하기 : 튜토리얼
2.1. 뭘 배울수있나? 
2.2. 또다른 튜토리얼: 웨딩 초대장 어플리케이션
2.3. 튜토리얼 어플리케이션 상세설명
2.4. 1단계: 일반적인 프로젝 시작하기
2.5. 2단계: 엔티티와 필드 생성하기
2.6. 3단계: 통합테스트
2.7. 4단계: IDE 사용하기
2.8. 5단계: 웹티어 만들기
2.9. 6단계: 웹서버 로딩하기
2.10. 어플리케이션에 보안적용하기
2.11. 웹UI의 Look & Feel 커스터마이징하기
2.12. 셀레니움 테스트 
2.13. 백업과 디플로이하기
2.14. 이제 뭐하지
 
  

2.4. 1 단계: 일반적인 프로젝 시작하기

이제껏 우리는 우리가 개발할 프로젝의 첫 아이디어와 요구사항들을 취합하기 위해 우리의 고객인 피자가게 주인과 애기했어. JSK와 Spring Roo 그리고 Maven을 설치하고 우리의 프로젝을 위한 새 디렉토리를 만들어보자:

> mkdir pizza
> cd pizza
pizza>

다음으로 스프링 루를 시작하고 'hint'를 쳐보면 루쉘로부터 자세한 가이드를 얻을수있을거야:

pizza> roo
    ____  ____  ____  
   / __ \/ __ \/ __ \ 
  / /_/ / / / / / / / 
 / _, _/ /_/ / /_/ /  
/_/ |_|\____/\____/    1.0.0.RELEASE [rev XXX]


Welcome to Spring Roo. For assistance press TAB or type "hint" then hit ENTER.
roo>
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.
roo>

루쉘안에는 몇가지 아주 유용한 기능들이 있어. 
hint를 쳐보면 이 명령어가 너가 첫 프로젝을 완성하기 위해 단계별로 해야할것을 가이드 해주는걸 알수있을거야. 또 help를 쳐보면, 현재 단계에서 해야할 모든 명령어들의 목록이 보여질거야.
우리의 경우는 아직 새 프로젝을 만들지도 않았으니까 help 명령어는 오직 현재 단계에서 가능한 최상위 레벨의 명령어들만 보여지겠지. 실제 프로젝을 만드려면 우리는 project 명령어를 사용해야해:

roo> project --topLevelPackage com.springsource.roo.pizzashop
Created /Users/sschmidt/Development/workspaces/test9/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
Created SRC_MAIN_RESOURCES/META-INF/spring/log4j.properties
com.springsource.roo.pizzashop roo>

project명령어를 쓰면, 루는 메이븐 스타일의 디렉토리 구조 뿐만아니라 메이븐 pom.xml 파일을 만들어줘. 너가 입력한 최상위 패키지는 이 명령어로 pom.xml 안에 <groupId>로 사용되어지지.

나중에 입력할 루 명령어인 "~"는 이 최상위 패키지(top-level-package)의 줄임을 뜻하게되지. (너가 루를 로드하는 매 순간 pom.xml를 통해 루쉘에 읽혀져)

다음의 폴더 구조가 이제 너의 파일 시스템에 만들어져있을거야:

메이븐을 잘 알고 있는 사람이라면 이 폴더구조가 너의 메인 프로젝 리소스와 테스트를 위해 폴더를 구분해서 만드는 표준 메이븐 방식이라는걸 알아차렸을거야. 루는 디폴트 어플리케이션 컨텍스트(default application context)와 log4j configuration도 설치해줘. 결과적으로 프로젝 pom 파일은 피자가게 프로젝을 시작하는데 필요한 모든 요구되는 의존성과 설정들을 포함하고 있는거지.

일단 루가 프로젝 구조를 생성하면, 너는 더 나아가 어플리케이션에 persistence 설정을 할수있어. 루는 ORM을 가능하게 해주는 편리한 추상화를 지원하는 자바 Persistence API (JPA)를 지원해. JPA는 너의 persistent 도메인 객체 (엔티티)와 엔티티간의 데이터베이스 테이블사이의 맵핑을 책임지지.

너의 프로젝안에 persistence configuration을 설치하고 변경하기 위해 persistence setup 명령어를 사용할수있어 (note: <TAB> 을 가능한한 자주 써버릇해; 명령어와 옵션을 자동완성해줄거야 뿐만아니라 관련된 도움말도 얻을수있을거야):

com.springsource.roo.pizzashop 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.
com.springsource.roo.pizzashop roo>
com.springsource.roo.pizzashop roo> 
jpa setup --provider HIBERNATE --database HYPERSONIC_IN_MEMORY Created SRC_MAIN_RESOURCES/META-INF/persistence.xml Created SRC_MAIN_RESOURCES/META-INF/spring/database.properties Managed SRC_MAIN_RESOURCES/META-INF/spring/applicationContext.xml Managed ROOT/pom.xml com.springsource.roo.pizzashop roo>

이 경우 우리는 ORM 제공자로 하이버네이트를 설치했어. 하이버네이트는 루가 현재 지원하는 3가지 ORB제공자중 하나야. EclipseLink와 OpenJPA가 다른 선택이 될수있지. 비슷한 설정으로 우린 Hypersoinc 메모리 데이터베이스를 설치했고 설정했어
 

제품 설정내에서 어플리케이션을 테스트 또는 설치할 준비하려면 jpa setup 명령어를 다시 반복할수있어. 루는 Postgres, MySQL, Microsoft SQL Server, Oracle, DB2, Sybase, H2, Hypersonic 등등의 데이터베이스 제품을 위해 TAB 자동완성을 지원해줘.
 

또 다른 중요한 단계는 SRC_MAIN_RESOURCES/META-INF/persistence.xml 파일을 편집하고 너의 JPA 제공자의 DDL (schema management) 설정을정하는거야. 이걸로 어플리케이션의 재시작간에 데이터를 보호하지. 이걸 위해서, 루는 자동적으로 JPA제공자의 해당 파일안에 코맨트함으로서 유효한 설정들을 목록화해줘. 기본 JPA제공자는 매번 다시 로드할때마다 모든 데이터베이스 테이블을 지워버릴거라는걸 알아둬. 넌 확실히 이 설정을 변경해야 할거야.
 

오라클과 DB2 JDBC 드라이버는 공개 메이븐 리파지토리에서 이용할수없어는것도 알아둬.

루는 이 드라이버들이 선택되면 표준의 의존성들을 설치할거야 그러나 너는 아마 너의 데이터베이스 버젼에 따라 패키지 이름이나 버전 이름을 스스로 적용해야할거야. 너의 로컬 메이븐 리파지토리내에 드라이버를 설치하기위한 메이븐 명령어는 다음과 같아: mvn install:install-file -DgroupId=com.oracle -DartifactId=ojdbc14 -Dversion=10.2.0.2 -Dpackaging=jar -Dfile=/path/to/file (오라클 드라이버의 예)