แชร์ controllers และ models ข้ามโปรแกรมโดยใช้ Tapestry 5

 ผมเขียน Web application แบบ MVC อยู่หลาย project แต่ว่าในหลายๆ project นั้น ก็ดันต้องใช้ controller และ model ร่วมกัน ที่เห็นเป็นสีเขียนใน diagram ข้างล่างนี่เอง. ถ้าเอาตัวอย่างจริงๆ controller กับ model ที่ว่าก็คือ Yaitron dictionary นี่เอง. มี code ที่ใช้ JPA เขียนสำหรับ query database แล้วทำ DAO มาครอบอีกที ให้ query แบบ abstract ขึ้นหน่อย. 

some control and some model in MVC (diagram) 

ท่าเดิมที่ผมเคยใช้ก็คือแค่ copy & paste โปรแกรมส่วน controller กับ model ไปวางในอีก project แล้ว แก้ไข้  configuration ของ dependency injection หน่อย ไม่ว่าจะเป็น Spring หรือ Tapestry-IOC ก็ตาม. ก็เป็นอันใช้ได้.  แต่พอแก้ทีก็ต้องเอามาปะใหม่เหนื่อยเหมือนกัน. :-P

ท่าแก้ท่านึงที่ทำได้คือ แยก controller กับ model ที่ว่าไปไว้อีก package เลย. เวลาจะใช้ก็แค่ copy jar เข้ามา หรือว่าแก้  dependency ใน pom.xml. แต่ว่าก็ยังมีปัญหาว่าต้องมาแก้ configuration ของ dependency inject เองอยู่ดี. 

หลังจากเล่น Tapestry 5 ไปสักพักก็พบว่ามีท่าแก้ ที่ลอกเลียนมากจาก tapestry-hibernate. เราสามารถไปเขียน configuration แยกไว้ต่างหาก. แล้วบอกให้ Tapestry-IOC ไปอ่าน configuration หลายอันได้.  เพื่อความเท่ยิ่งๆ ขึ้นไป เราสามารถเขียนบอกไว้ใน MANIFEST.MF เลยว่าต้องการให้ Tapestry ไป load configuration ไหนขึ้นมาบ้าง. และเท่ขึ้นไปอีกเราก็จะไปเขียนไว้ใน pom.xml.

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <configuration>
                    <archive>
                        <manifestEntries>
                            <Tapestry-Module-Classes>
                                org.kunyit.yaitron.services.YaitronModule
                            </Tapestry-Module-Classes>
                        </manifestEntries>
                    </archive>
                </configuration>
            </plugin>

 

พอทำแบบนี้แล้ว เวลาเรา include jar ของเราไปใน Tapestry project  แล้ว YaitronModule ก็จะถูก load ขึ้นมาโดยทีไม่ต้องมานั่งแก้เอง.

 

 

 

คำสำคัญ (keywords): tapestry, tapestry5, package, mvc, sharing, controller, model
· เลขที่บันทึก: 112609
· สร้าง: 18 กรกฎาคม 2550 21:13 · แก้ไข: 11 กุมภาพันธ์ 2555 19:31
· อ่าน: 659 · ดอกไม้: 0 · ความเห็น: 0 · สร้าง: เกือบ 5 ปี ที่แล้ว
· สัญญาอนุญาต: สงวนสิทธิ์ทุกประการ
ดอกไม้
เข้าระบบ
Facebook
Twitter
Google

ความเห็น

ไม่มีความเห็น
ร่วมแสดงความเห็นในหน้านี้
ชื่อ:
อีเมล:
สามบวกแปดเท่ากับ: อ่านภาษาไทยได้ไหม?

กรุณาคำนวนตัวเลขแล้วใส่ผลลัพธ์เป็นภาษาไทยเพื่อแสดงว่าคุณไม่ใช่สแปม

ข้อความ:  
เรียกเครื่องมือจัดการข้อความ เขียนแบบ Markdown ได้
แนบไฟล์:
ชื่อไฟล์ต้องใช้ตัวอักษร a-z, A-Z, 0-9 สัญลักษณ์ขีดกลาง (-) หรือขีดล่าง (_) และห้ามเว้นวรรค
ส่งอีเมลแจ้งด้วยเมื่อรายการนี้มีความเห็นเพิ่มเติม New!
การพัฒนาซอฟต์แวร์