วันเสาร์ที่ 23 มกราคม พ.ศ. 2559

Spring part 9-1 Spring Annotation Configuration without XML

>> ในที่สุดก็เขียนจนมาถึงการ configuration ประดา bean โดยไม่ต้องใช้ไฟล์ XML แล้วนะครับ จากพื้นฐานเราทราบว่า spring จะฉีด bean ทั้งหลายให้กับคลาสที่เรียกใช้โดยมีคุณ autowire เป็นพ่อบ้านจัดการความต้องการนี้ให้

>> ในเมื่อทราบกันขนาดนี้แล้ว เราก็จะย้ายการนิยาม bean ต่างๆในไฟล์ applicationContext.xml ไปไว้กับโค้ดจาวาแทน เย้ๆ

>> ถามว่าทำไปทำไม?
ตอบว่า อยากหนี xml แล้วไปใช้ java annotation แทนไงล่ะ จะได้เขียน xml น้อยลง โค้ดก็สะอาดขึ้น

>> ใช้อะไรเพิ่มบ้างล่ะ?
ตอบว่า ครับผม มีดังนี้
- เราจะแทนที่ applicationContext.xml ด้วยไฟล์จาวา ให้ชื่อเดียวกันหรือต่างกันก็ได้ ในที่นี้เอาเป็นชื่อ AppConfiguration.java ก็แล้วกัน

- ใช้ @Configuration annotation มาจัดการความเป็น context หรือก็คือให้ไฟล์ AppConfiguration.java เป็นผู้รับผิดชอบหน้าที่ที่ไฟล์ applicationContext.xml เคยทำ (มันจะเป็นที่ประกาศหรือนิยาม bean ต่างๆ) ดังนั้น annotation นี้จึงอยู่ระดับคลาส

- ใช้ @Bean annotation เพื่อบอกว่าเหล่าเมธอด getter ที่กำลังจะนิยามขึ้นนี้คือ bean โดยจะตั้งชื่อให้หรือไม่ก็ได้อยู่ที่ว่าต้องการเรียกใช้มันด้วยชื่อหรือเปล่า (ซึ่งตัวอย่างนี้ใช้ครับ) ดังนั้น annotation นี้จึงอยู่ระดับเมธอด

*** ชื่อที่เราตั้งให้กับ annotation ไม่ว่าจะระดับคลาสหรือเมธอด spring ไม่สนใจว่าจะเป็น case sensitive หรือไม่ รู้เพียงว่าเป็นแค่สตริง

>> แล้วเขียนคลาสทดสอบอย่างไรเอ่ย?
ตอบว่า ตามที่กล่าวมา
- เราจะสร้าง AppConfiguration.java ไว้ที่ package
com.pros.example.server (ทั้งหมดอยู่ในรูปภาพ)

- เดิมเราเรียก context จากออบเจ็กต์ที่ชื่อ ClassPathXmlApplicationContext ก็ให้เปลี่ยนเป็น AnnotationConfigApplicationContext แล้วระบุเจ้า AppConfiguration.class เป็นพารามิเตอร์

- อย่าลืมลบไฟล์ applicationContext.xml ด้วยล่ะ เพราะไม่จำเป็นต้องใช้แล้ว จากนั้นคลิกขวาเลือก Run As ตามด้วย Java Application ได้เลย

>> และนี่คือ source code ครับ




ไม่มีความคิดเห็น:

แสดงความคิดเห็น