บทท 1 แนะนา Spring Framework
Spring framework เปน open source framework ทไดรบความนยมในปจจบน ซงมพนฐานมากจากภาษา
Java โดยผทคดคนและพฒนาขนมาเปนเวอรชนแรก คอ Rod Johnson โดยอยภายใตลขสทธของ Apache license
ซงมโมดลของ Spring Framework ทถกใชงานบอย ๆ ดงน
• Spring Core Container เปนโมดลพนฐานของ Spring และเปนสวนในการจดเตรยม Spring containers
ซงไดแก BeanFactory และ ApplicationContext
• Aspect Oriented Programming อนญาตใหมการพฒนาในรปแบบของ cross-cutting concerns คอ ม
ลกษณะของโปรแกรมทมผลตอความกงวลอน ๆ
• Data Access การเขาถงขอมลโดยใช ORM (Object Relational Mapping) เชน Hibernate
• MVC (Model-View-Controller) เปนโครงสรางในการจดการระบบทซบซอนโดยแบงสวนของ
โปรแกรมเปนสวนของขอมล (Model) การแสดง (View) และ สวนของการควบคมการทางาน
(Controller)
• Inversion of Control เ ป นส วนข อง ก า รทา Dependency Injection เ ป นก า รช วย ใ นก า ร เ ช อม ตอ
ความสมพนธระหวางคลาสเขาดวยกน และในเวลาเดยวกนสามารถทาใหคลาสตาง ๆ เปนอสระตอกน
การเตรยมความพรอมเพอใชงาน Spring Framework ดวย Eclipse
• ตดตง JDK กอนเปนอนดบแรก จากนนสราง Environment variables ทชอวา JAVA_HOME ใหมคา
เ ปน "C:\Program Files\Java\jdk1 .8 .0_60" และ กาหนด path โดยตอทายของเดมท มอย เ ปน
%JAVA_HOME%\bin
• ตดตง Eclipse ซงสามารถดาวนโหลดไดจาก https://www.eclipse.org/downloads/
• ตดตง Apache Maven ซงเปนตวทชวยจดการ Java Library ทเราตองการเพมเขามาใชในโปรเจคของเรา
โดยทไมตองดาวนโหลดไฟล .jar มาเพมเขาไปในโฟลเดอร lib ในโปรเจคอกตอไป
1
ขนตอนท 1 สราง Maven Project
• ตวอยางการสราง Maven Project จากเมน File - > New - > Project
2
• เลอกสราง Create a simple project จากนนกดปม Next
3
• ตงชอ Group id, Artifact id, Name และ Description วา Maven_Demo
• เมอสราง Project เสรจแลว ใหเปดไฟลทชอวา pom.xml ซงจะเปนไฟลทใชสาหรบจดการไลบราร
ตาง ๆ ทตองการเรยกใชใน Project
• เลอกท Tab Dependencies จากนนกดปม Add เพอตองการเพมไลบรารทตองการ
4
• กรณท ไมสามารถคนหาไลบรารไดเนองจาก "Index downloads are disabled, search result may be
incomplete" สามารถเขาไป enable ไดทเมน Window - > Preferences - > Maven จากนนเลอก Download
repository index updates on startup และ สา ม ารถเ ล อก Download Artifact Sources กบ Download
Artifact JavaDoc เพมเตมได
5
• หลงจากกดปม Apply จากน นไปทเมน Window - > Show view - > Other - > Maven เลอก Maven
Repositories
จากนนเลอก Global Repositories และ คลกขวาท URL แลว Rebuild Index
6
• กรณทไมสามารถหาไลบรารไดจาก Eclipse สามารถเขาไปทเวบ https://mvnrepository.com/ เพอคนหา
ไลบรารทตองการได ดงน
7
ขนตอนท 2 การสราง Java Beans
• สรางคลาสทประกอบดวย Attributes และ Method setter และ getter ตามปกต เชน คลาส Student
• กรณทยงไมไดตดตง Spring IDE จะไมปรากฏเมน Spring ใหเลอกใชงาน ดงนนจาเปนตองตดต ง
Spring IDE โดยไปท เมน Help - > Eclipse Marketplace…
• สราง Spring Bean Configuration file เพอทางาน Mapping ระหวาง Java Bean กบ ตารางของฐานขอมล
8
จะได beans.xml ดงน <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> </beans>
• จากนนสราง beans ใน Tab beans ของ beans.xmlโดยเลอกทเมน New Bean…
9
• จากนนตงชอ และเลอกคลาสทตองการ Mapping
• จะปรากฎในไฟล beans.xml ดงน <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <bean id="student" class="com.bean.Student"></bean> </beans>
10
• การเรยกใช Spring bean จาเปนตองใชไลบรารของ Spring 3 ตวดงน org.springframework beans,
org.springframework context และ org.springframework core ซงจะตองไปเพมใน pom.xml
• สรางคลาส Run เพอทาการเรยกใช Spring bean public static void main(String[] args) { ApplicationContext ac = new ClassPathXmlApplicationContext("com/bean/beans.xml"); Student st = (Student) ac.getBean("student"); System.out.println("Stuid = " + st.getStuid() + " Name = " + st.getStuname()); ((ClassPathXmlApplicationContext)ac).close(); }
11
• ในกรณทตองการสง parameters เขาไปยง constructer ของ Student bean สามารถกาหนดเงอนไขได
ดงน
จากนนเพม parameter ทละตวแปร
• ในกรณทไมม Constructor ของคลาสสามารถกาหนดเปน properties ของคลาสได ดงน
ขนตอนแรกสรางคลาส Subject ทประกอบไปดวย รหสวชา ชอวชา และ รายชอผสอน public class Subject { private String subjid; private String subjname; private List<String> lecturers; ... }
12
• สราง bean ทชอวา Subject จากนน คลกขวาเลอก Insert <property> element
• ในกรณทเปน List ของ Object สามารถเลอกเพม List เขาไปใน Property ไดดงน
13
• จากนนเลอก Insert <value> element เนองจากคลาส Subject ประกอบไปดวย List<String> ในกรณท
เปน List<Student> สามารถเลอก Insert <bean> element ได
• หลงจากนนใหเปดไฟล beans.xml และเพมขอมลลงไปใน list ดงน <bean id="subject" class="com.beans.Subject">
<property name="subjid" value="it311"></property> <property name="subjname" value="Server Side Programming"></property> <property name="lecturers">
<list> <value>Sayan Unankard</value> <value>Rangsit Sirirangsri</value> <value>Nongkran Kamwichai</value> </list>
</property> </bean>
• สามารถทดสอบการอานขอมลจาก คลาส bean ของ Subject ในคลาส Run ไดดงน Subject subj = (Subject) ac.getBean("subject"); System.out.println("Subjid = " + subj.getSubjid() + " Name = " + subj.getSubjname()); for (String lec : subj.getLecturers()) { System.out.println(lec); }
14
• ในกรณทคลาสประกอบไปดวย bean อน ๆ เชน ใน Student ม คลาส Subject สามารถกาหนดเปน
property โดยกาหนดคาเปน ref ไปยง object ของ Subject ไดดงน
• ในสวนของคลาส Run สามารถเรยกใช Subject Object จากตวแปร Object ของ Student ไดดงน
Subject subj = st.getSubj();
• การสราง bean สามารถกาหนดการทางานเรมตน และ การทางานสนสดของแตละ bean ได โดยการ
สรางเมธอดและกาหนดใน init-method และ destroy-method ไดดงน
สรางเมธอดในคลาส Student เพอกาหนดการทางานเรมตน และ สนสดของ Student bean
public void init_student(){ System.out.println("init student");
} public void destroy_student(){
System.out.println("destroy student"); }
init-method จะถกเรยกใชอตโนมต เมอมการสราง ApplicationContext โดยเรยกใชคาสงตอไปน
ApplicationContext ac = new ClassPathXmlApplicationContext("com/bean/beans.xml");
15
ในขณะท destroy-method จะถกเรยกใชอตโนมต เมอมปดการใชงาน ApplicationContext โดยการ
เรยกใชคาสงตอไปน
((ClassPathXmlApplicationContext)ac).close();
• ไฟล beans.xml สามารถเขยนในรปแบบของ Source ไดดงน <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <bean id="student" class="com.beans.Student" destroy-method="destroy_student" init-method="init_student"> <constructor-arg name="stuid" value="580001"> </constructor-arg> <constructor-arg name="stuname" value="Somchai Jaidee"> </constructor-arg> <constructor-arg name="gpa" value="3.54"> </constructor-arg> <property name="subj" ref="subject"></property> </bean>
16
<bean id="subject" class="com.beans.Subject"> <property name="subjid" value="IT311"></property> <property name="subjname" value="Server Side Programming"> </property> <property name="lecturers"> <list> <value>Sayan Unankard</value> <value>Rangsit Sirirangsri</value> <value>Nongkran Kamwichai</value> </list> </property> </bean> </beans>
17