สำหรับคนที่ใช้ spring framework เคยรู้สึกเหนื่อยใจมั้ย ตอนที่จะขึ้น project ซักอันนึงต้อง config มากมายมหาศาลกว่า จะเริ่มลงมือเขียนโปรแกรมได้ โดยส่วนตัวผมวิธีที่ลัดขั้นตอนที่สุดก็คือ copy จากโปรเจ็คเดิมมาแล้วก็มาแก้ config ให้เข้ากับโปรเจ็คใหม่ แต่ก็นั่นแหละ ถ้าแก้ไม่ดีมันก็เหมือนวางยาตัวเองเข้าไปอีก แต่ตอนนี้เริ่มมีแสงสว่างปลายอุโมงค์ให้เห็นเพราะ spring source ได้ออก tool ตัวใหม่ชื่อ Roo มาให้เราๆท่านๆได้ใช้

แล้ว Roo คือ?
“Interactive, lightweight, user customizable tooling, that enables rapid delivery of high performance enterprise Java applications”
ทั้งหมดทั้งปวงนี้คือคำจำกัดความที่ Rod johnson พูดถึง Spring Rooในงาน springOne ซึ่งก็ถือได้ว่า เป็นการเปิดตัวอย่างเป็นทางการของ Roo หลังจาก ปล่อยให้ download มาลองใช้อยู่พักใหญ่
สิบปากว่าไม่เท่าลงมือมั่วดูผลลัพธ์ ลองกันเลยดีกว่าครับ
1.เริ่มจาก download spring-roo
2.ทำการติดตั้ง spring roo แตกzip ไปที่ path ที่เราต้องการ สิ่งจำเป็นสำหรับการติดตั้ง maven เวอร์ชั่นสูงกว่า 2.0.9 , java เวอร์ชั่นสูงกว่า 1.5
window ให้เพิ่ม \path\to\roo\bin เข้าไปที่ ENVIRONMENT PATH
linux ให้สร้าง link ตามคำสั่งนี้ครับ ln -s /path/to/roo/bin/roo.sh /usr/bin/roo
(ถ้ายังไม่ได้ติดตั้ง maven แนะนำไปที่นี่)
ทดสอบการติดตั้ง roo พิมพ์ที่ console $ roo ถ้าสำเร็จหน้าตาก็จะออกมาแบบนี้ (พิมพ์ quit หรือ exit ก็ได้ถ้าต้องการจะออกจาก roo shell)

ถ้าต้องการดูชุดคำสั่งที่ roo จัดเตรียมไว้ให้ก็พิมพ์ roo> help

หรือว่าใช้ tab ก็จะแสดงชุดคำสั่งออกมาเหมือนกัน roo> tab

3.สร้าง project
โดยเริ่มจากสร้าง directory ที่ชื่อว่า simple-roo ด้วยคำสั่ง $ mkdir simple-roo
หลังจากนั้นก็ทำการ change directory ไปที่ simple-roo พิมพ์ $ cd simple-roo
แล้วก็พิมพ์ roo เพื่อเข้าไปใน shell
เมื่อเข้ามาแล้วก็ทำการพิมพ์ create project แล้วลองเคาะ tab ซึ่ง -projectName ก็จะขึ้นมาอัตโนมัติ เพื่อให้ใส่ชื่อโปรเจ็คเข้าไปในที่นี้ตั้งว่า simple-roo สุดท้ายก็ทำการ ตั้งชื่อ top level project (ใช้เคาะ tab เอาเหมือนเดิม) ชื่อว่า com.spring66.roo
roo> create project -projectName simple-roo -topLevelPackage com.spring66.roo

4. ทำการติดตั้งตัว ORM กับเลือก database ที่จะใช้
roo> install jpa -provider HIBERNATE -database HYPERSONIC_PERSISTENT

roo> database properties (จะแสดง property ของ database)
ซึ่งถ้าหากต้องการจะเปลี่ยน property ก็สามารถแก้ไขโดยอ้างจาก -key เพื่อเปลี่ยนค่า -value
roo> database set -key database.url -value jdbc:hsqldb:${user.home}/springworkspace/simple-roo/
5.สร้าง entity
roo> new persistent class jpa -name ~.entity.Person
(ตัว “~” เป็นอักขระพิเศษที่แทนค่าtop-level package ของ โปรเจค) ผลลัพธ์ที่ได้ก็จะออกมาอย่างนี้

จะเห็นว่าตัว class หน้าตาจะออกมาบ้านๆมาก
@Entity
@RooEntity
@RooJavaBean
@RooToString
public class Person {
}
จากนั้นทำการเพิ่ม field เข้าไปใน entity
roo> add field string firstName -notNull -sizeMin 1 -sizeMax 30
roo> add field string lastName -notNull -sizeMax 50
roo> add field string email -sizeMax 30
ใน class Person ก็จะเป็นดังรูปข้างล่าง
@Entity
@RooEntity
@RooJavaBean
@RooToString
public class Person {
@NotNull
@Size(min = 1, max = 30)
private String firstName;
@NotNull
@Size(max = 50)
private String lastName;
@Size(max = 30)
private String email;
}
6.สร้าง test โดยใช้ JUnit integration tests
roo> new integration test
ผลลัพธ์ที่ได้ก็จะออกมาอย่างนี้

7.สร้าง controller
roo> new controller automatic ~.web.PersonController
ผลลัพธ์ที่ได้ก็จะออกมาอย่างนี้

8.สร้าง test ของ controller
roo> new selenium test -controller ~.web.PersonController
9.จบภาคspring roo เบื้องต้นทำการออกจากระบบ
roo> exit
ทดสอบระบบโดยใช้ maven
1.เริ่มจาก $ mvn test ถ้า test ผ่านก็ทำการ run โดยใช้ $ mvn tomcat:run
2.จากนั้นก็เปิด web browser แล้วก็พิมพ์ http://localhost:8080/simple-roo
3.สุดท้ายก็ test อีกครั้งโดยใช้ $ mvn selenium:selenese
reference
http://blog.springsource.com/2009/05/27/roo-part-2/
http://www.infoq.com/presentations/SpringOne-Keynote-Rod-Johnson

แก้คำผิดด้วยครับ
มหาสาร แก้เป็น มหาศาล
dirctory แก้เป็น directory
ตรงย่อหน้าตรงนี้ผมอ่านแล้วรู้สึกงงๆ ครับ น่าจะเพิ่มบรรทัดใหม่ เพื่ออธิบายทีละขั้นตอน จะทำให้เข้าใจง่ายขึ้นครับ
ปล.
1. น่าจะ capture ผลการทำงานมาให้ดูด้วยนะครับ ว่าเป็นอย่างไร
2. file .aj คือ AspectJ
3. ผมคิดว่า ROO มันเป็นทั้งเครื่องมือและอีกภาษานึงเลยครับ
@ http://somkiatspns.blogspot.com/
แก้ให้แล้วครับ ขอบคูณมากพี่ ส่วนที่เหลือขอยกยอดเป็นอันถัดไปครับ ฮ่าๆๆ
สวรรค์ รำไร สำหรับคนเขียน Java
Java เร็ว
spring roo มีจิงโจ้ด้วย อิอิ