17
บทที่ 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

บทที่ - Maejo University to Spring Framework.pdf · • การเรียกใช้ Spring bean จําเป็นต้องใช้ไลบรารีของ

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: บทที่ - Maejo University to Spring Framework.pdf · • การเรียกใช้ Spring bean จําเป็นต้องใช้ไลบรารีของ

บทท 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

Page 2: บทที่ - Maejo University to Spring Framework.pdf · • การเรียกใช้ Spring bean จําเป็นต้องใช้ไลบรารีของ

ขนตอนท 1 สราง Maven Project

• ตวอยางการสราง Maven Project จากเมน File - > New - > Project

2

Page 3: บทที่ - Maejo University to Spring Framework.pdf · • การเรียกใช้ Spring bean จําเป็นต้องใช้ไลบรารีของ

• เลอกสราง Create a simple project จากนนกดปม Next

3

Page 4: บทที่ - Maejo University to Spring Framework.pdf · • การเรียกใช้ Spring bean จําเป็นต้องใช้ไลบรารีของ

• ตงชอ Group id, Artifact id, Name และ Description วา Maven_Demo

• เมอสราง Project เสรจแลว ใหเปดไฟลทชอวา pom.xml ซงจะเปนไฟลทใชสาหรบจดการไลบราร

ตาง ๆ ทตองการเรยกใชใน Project

• เลอกท Tab Dependencies จากนนกดปม Add เพอตองการเพมไลบรารทตองการ

4

Page 5: บทที่ - Maejo University to Spring Framework.pdf · • การเรียกใช้ Spring bean จําเป็นต้องใช้ไลบรารีของ

• กรณท ไมสามารถคนหาไลบรารไดเนองจาก "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

Page 6: บทที่ - Maejo University to Spring Framework.pdf · • การเรียกใช้ Spring bean จําเป็นต้องใช้ไลบรารีของ

• หลงจากกดปม Apply จากน นไปทเมน Window - > Show view - > Other - > Maven เลอก Maven

Repositories

จากนนเลอก Global Repositories และ คลกขวาท URL แลว Rebuild Index

6

Page 7: บทที่ - Maejo University to Spring Framework.pdf · • การเรียกใช้ Spring bean จําเป็นต้องใช้ไลบรารีของ

• กรณทไมสามารถหาไลบรารไดจาก Eclipse สามารถเขาไปทเวบ https://mvnrepository.com/ เพอคนหา

ไลบรารทตองการได ดงน

7

Page 8: บทที่ - Maejo University to Spring Framework.pdf · • การเรียกใช้ Spring bean จําเป็นต้องใช้ไลบรารีของ

ขนตอนท 2 การสราง Java Beans

• สรางคลาสทประกอบดวย Attributes และ Method setter และ getter ตามปกต เชน คลาส Student

• กรณทยงไมไดตดตง Spring IDE จะไมปรากฏเมน Spring ใหเลอกใชงาน ดงนนจาเปนตองตดต ง

Spring IDE โดยไปท เมน Help - > Eclipse Marketplace…

• สราง Spring Bean Configuration file เพอทางาน Mapping ระหวาง Java Bean กบ ตารางของฐานขอมล

8

Page 9: บทที่ - Maejo University to Spring Framework.pdf · • การเรียกใช้ Spring bean จําเป็นต้องใช้ไลบรารีของ

จะได 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

Page 10: บทที่ - Maejo University to Spring Framework.pdf · • การเรียกใช้ Spring bean จําเป็นต้องใช้ไลบรารีของ

• จากนนตงชอ และเลอกคลาสทตองการ 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

Page 11: บทที่ - Maejo University to Spring Framework.pdf · • การเรียกใช้ Spring bean จําเป็นต้องใช้ไลบรารีของ

• การเรยกใช 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

Page 12: บทที่ - Maejo University to Spring Framework.pdf · • การเรียกใช้ Spring bean จําเป็นต้องใช้ไลบรารีของ

• ในกรณทตองการสง parameters เขาไปยง constructer ของ Student bean สามารถกาหนดเงอนไขได

ดงน

จากนนเพม parameter ทละตวแปร

• ในกรณทไมม Constructor ของคลาสสามารถกาหนดเปน properties ของคลาสได ดงน

ขนตอนแรกสรางคลาส Subject ทประกอบไปดวย รหสวชา ชอวชา และ รายชอผสอน public class Subject { private String subjid; private String subjname; private List<String> lecturers; ... }

12

Page 13: บทที่ - Maejo University to Spring Framework.pdf · • การเรียกใช้ Spring bean จําเป็นต้องใช้ไลบรารีของ

• สราง bean ทชอวา Subject จากนน คลกขวาเลอก Insert <property> element

• ในกรณทเปน List ของ Object สามารถเลอกเพม List เขาไปใน Property ไดดงน

13

Page 14: บทที่ - Maejo University to Spring Framework.pdf · • การเรียกใช้ Spring bean จําเป็นต้องใช้ไลบรารีของ

• จากนนเลอก 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

Page 15: บทที่ - Maejo University to Spring Framework.pdf · • การเรียกใช้ Spring bean จําเป็นต้องใช้ไลบรารีของ

• ในกรณทคลาสประกอบไปดวย 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

Page 16: บทที่ - Maejo University to Spring Framework.pdf · • การเรียกใช้ Spring bean จําเป็นต้องใช้ไลบรารีของ

ในขณะท 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

Page 17: บทที่ - Maejo University to Spring Framework.pdf · • การเรียกใช้ Spring bean จําเป็นต้องใช้ไลบรารีของ

<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