스프링 Roo petclic 예제 실행 성공

1. 프로젝트 디렉토리 만들기

# mkdir petclinic

2. 디렉토리로 이동하기

# cd petclinic

3. 루 실행

# roo

4. 스크립트 실행

roo> script clinic.roo
roo> exit

5. 이클립스 프로젝트로 변환

mvn eclipse:eclipse

6. 이클립스 프로젝트로 임폴트

7. 콘솔에서 테스트

mvn test

8. Run As -> Run on server

간단하네요.. 소스 코드를 봤더니, 애노테이션과 AspectJ의 향연입니다. 자바 소스 코드는 거의 없다시피 합니다. 하이버네이트를 사용했습니다. 도메인이 CRUD를 담당하는지(물론 어딘가로 위임하겠죠.), 도메인과 컨트롤러 밖에 보이지 않습니다. 도메인이 역할을 위임하는 녀석들이 보이지 않습니다.

@Entity
@RooJavaBean
@RooToString
@RooEntity(finders = { “findVisitsByDescriptionAndVisitDate”, “findVisitsByVisitDateBetween”, “findVisitsByDescriptionLike” })
public class Visit {

    @Size(max = 255)
    private String description;

    @NotNull
   @Past
    @Temporal(TemporalType.TIMESTAMP)
    private Date visitDate;

    @NotNull
    @ManyToOne
   @JoinColumn
    private Pet pet;

    @ManyToOne
   @JoinColumn
    private Vet vet;
}

하늘색은 JPA 애노테이션(하지만 실제로 사용하는 라이브러리는 하이버네이트, 왜냐면 JPA가 표준이까) 녹색은 Roo 애노테이션, 남색은 javax.validation 애노테이션입니다. @Past는 항상 입력되는 Date가 입력되는 시점 기준으로 이전 날짜여야 한다네요. 오호..

Roo를 학습하려면 Roo가 제공하는 애노테이션과 그 기능을 파악하는게 주요해 보입니다. 그리고 Roo가 가정하고 있는 CoC도 익혀야겠죠. 좀 더 자세히 보려면 Roo가 제공하는 Aspect들을 조사해봐야겠습니다.

AspectJ 파일들을 보려면 이클립스에서 네비게이터로 보면 됩니다. 아니면 Filters 옵션에서 Hide generated ROO ITDs의 체크를 없애면 패키지 익스플로러에서도 볼 수 있습니다.

흠.. 기발한 것 같습니다. AspectJ를 자동생성해서 자바로 만든 클래스에 @Configurable을 붙이고 테스트까지 자동생성합니다. @_@ 와.. 정말이지 이건 애노테이션과 AspectJ의 향연입니다.

Roo 설치하기

1. 메이븐 버전확인

mvn -v

2.0.9 이상이어야 함.

2. 자바 버전 확인

java -version

자바 5 이상이어야 함.

3. roo 압축파일 풀기

4. ROO_HOME을 환경 변수에 추가하기

5. ROO_HOME/bin을 PATH에 추가하기

6. STS 2.0.1 준비하기

7. ROO 이클립스 플러그인을 STS/dropins 디렉터리에 추가하기

다음 STS 배포 부터는 이 플러긴도 포함되서 배포할 예정.

8. 메이븐 로컬 저장소에 Roo 추가하기

리눅스/맥: mvn install:install-file -DgroupId=org.springframework.roo -DartifactId=roo-annotations -Dversion=1.0.0.A1 -Dpackaging=jar -Dfile=$ROO_HOME/dist/roo-annotations-1.0.0.A1.jar

윈도: mvn install:install-file -DgroupId=org.springframework.roo -DartifactId=roo-annotations -Dversion=1.0.0.A1 -Dpackaging=jar -Dfile=%ROO_HOME%/dist/roo-annotations-1.0.0.A1.jar

9. 콘솔에서 roo 입력해보기

10. hint 입력해보기

11. q 입력해서 종료하기

스프링 Roo 프로젝트 이름 투표하기

Roo 라는 이름은 프로젝트 내부에서 사용한 이름인데, 공식 이름은 아직 안 정한 듯 합니다. 그냥 Roo라고 해도 괜찮을 것 같은데 요즘 투표 중인가 봅니다.

http://cloud.springsource.com/vote

심심하신 분들은 이 곳으로 가셔서 투표해보세요.

선택지에는 요런게 있습니다.

Spring HyperDrive
Spring Roo
Spring Boost
Spring Spark
Spring Dart

재미있는 건 저 링크에 들어갈 때마다 선택지의 순서가 달라진다는 겁니다. 공정성을 위해 그렇게 만들어 둔 것 같은데.. 참 센스가 돋보입니다.

Spring Roo가 나왔습니다.

http://www.springsource.org/roo

알고 계신분들은 예전부터 알고 계시고 그 소스 코드를 궁금해 하셨을 겁니다. 전 이 녀석의 소스 코드보다 이걸 사용해서 만든 애플리케이션 구조와 코드가 더 궁금했는데, 알파 버전 이기는 해도 일단 예제와 함께 공개가 되서 신나네요. 생각보다 빨리나와서 놀랐습니다.ㅎㅎ

Roo는 무엇인가?

새로운 언어나 문법을 익히지 않고 자바 애플리케이션을 엄청 빠르게 만들 수 있게 해주는 프레임워크입니다. 3분 안에 100타 미만으로 애플리케이션을 만들 수 있게 도와준다고 합니다. 탭 자동완성과 힌트를 제공하며 컨텍스트를 인지하는 커맨드 라입 쉘을 제공합니다. 이 쉘을 띄운 다음에 애플리케이션 베이스를 만드는 것 같습니다. 마치 Grails나 RoR 처럼요. 생산성에 초점을 둔 프레임워크로 보면 될 것 같습니다. 그러면서도 성능 문제도 없고, 유연성을 잃지도 않고, 비침략적인 코드를 유지하는… 엄친아 격인 프레임워크라고 해야 되나..

재밌겠네요. 어디 잘 돌아가나 한 번 예제라도 돌려봐야겠습니다~

동원훈련 2박3일 끌려가기 싫으시면 동원훈련이 끝난 동네로 이사를 가세요~

요즘 동원훈련 기간이죠? 학교에서 두 번 다녀올땐 학생이라고 당일치기 시켜주더니, 작년 부터 직장인이라고 2박3일이나 데려가더라구요. 정말 정말 지겨워 죽는 줄 알았습니다. ㅠ.ㅠ Kill zone 같은 미드를 보여주던지, Call of Duty 같은 게임을 시켜주라구요.

어쨋든, 그래서 저는 올해가 4년차니까 2박 3일 동원 훈련을 가야하는데, 제가 얼마전에 전입신고를 해서 색시랑 살고 있는 곳으로 주소지를 이전했습니다. 그랬더니 글쎄 이동네 동원 훈련이 끝났다고 6시간 교육만 받으러 오라는 통지서가 왔어요. 크하핫


결론은 2박 3일에서 6시간 교육으로 줄었다는거~ 나이수!!! 설마 6시간 동안 빡쎄게 굴리려는 건 아니겠죠?ㅋㅋ