Spring Framework คืออะไร?
- เป็น framework แบบ light-weight ที่ครอบคลุมสำหรับการสร้างแอปพลิเคชัน Java ประเภทต่างๆ เช่น
- Web application
- Enterprise application
- Standalone application
- Batch application
- Integration application
- Mobile application
Key Feature – DI
- Beans จะทำงานผ่าน Dependency Injection (DI)
- โดยมีเป้าหมายเพื่อจัดการกับ Beans
- ระบบการทำงานของ beans สามารถเข้าถึงได้จากทุกที่
- Spring MVC มีระบบการจัดการภายใน
Key Features – Persistence
- ครอบคลุมถึงการใช้ RDBMS
- มีชั้นเลเยอร์ที่ใช้สำหรับการเชื่อมต่อกันระหว่าง Database
- Higher abstraction over JDBC
- การรวมตัวกับ Persistence framework ทำให้เกิด Hibernate, JPA
- สนับสนุนการใช้ NoSQL
- MongoDB
Key Features – Web-Tier
- Spring MVC web application framework
- ถูกสร้างจากฟังก์ชันต่างๆใน Spring
- รองรับกับเทคโนโลยีต่างๆสำหรับการสร้าง views รวมทั้ง Thymeleaf, Velocity, Freemarker และ JSP เป็นต้น
- Spring Web Flow
- การนำทางไปสู่เว็บภายนอก
- สนับสนุน REST
- ง่ายต่อการสร้าง RESTful service
- Default over configuration
- ทุกอย่างสามารถกำหนดค่าได้และปรับแต่งได้
Key Features – AOP
- ครอบคลุม aspect-oriented programming (AOP) framework สำหรับการให้บริการ เช่น การจัดการธุรกิจ และการสนับสนุนด้านความปลอดภัย
- เหมือนกันกับ DI โดยมีเป้าหมายเพื่อปรับปรุง modularity ของระบบที่สร้างโดยใช้ framework
Key Features – Test
- สนับสนุนการทดสอบแบบ Unit Test และ Integration testing
- สนับสนุนทั้ง JUnit และ TestNG
- ทำการโหลด Spring application ให้มีความสม่ำเสมอและทำการ caching การกระทำต่างๆไว้
- ให้ object มาใช้ทดสอบโค้ด โดยจะแยกออกเป็นส่วนๆ
ทำไมถึงต้องใช้ Spring Framework
- Wiring components (Beans) through Dependency Injection (DI)
- สนับสนุนการรวมส่วนต่างๆมาประกอบกันเป็นโปรแกรม
- Design to Java interfaces
- มีฟังก์ชันป้องกัน user จากข้อมูลรายละเอียดการทำงานต่างๆ
- Test-Driven Development (TDD)
- ชั้นของ POJO สามารถทำการทดสอบได้โดยไม่ได้ยึดติดกับ framework
- Declarative programming through AOP
- ธุรกรรมและความปลอดภัยสามารถกำหนดค่าได้อย่างง่าย
- Simplify use of popular technologies
- ช่วยลดความซ้ำซ้อนของ application จากการลดความซ้ำซ้อนของโค้ดลง
- สามารถเข้าถึงเทคโนโลยีเฉพาะด้านได้
- สามารถจัดการกับข้อผิดพลาดทั่วไปได้
- Well designed
- ง่ายต่อการขยาย
- สามารถเรียก classes มาใช้ซ้ำได้
- Integration with other technologies (สามารถใช้งานร่วมกับเทคโนโลยีอื่นๆได้)
- JPA, Hibernate, JDBC (for data access)
- Thymeleaf, Velocity, etc. (for presentation)
- JSF, Wicket, Struts, etc (For web)
- AngularJS, jQuery, JavaScript (for front-end UI)
- ActiveMQ, AMQP (for messaging)
Spring Framework Architecture
Usage Scenarios (สถานการณ์การใช้งาน)
- สามารถใช้ Spring ได้ทุกรูปแบบ ตั้งแต่ แอปพลิเคชัน ไปจนถึง โปรแกรมประยุกต์ระดับองค์กรที่ใช้การจัดการและฟังก์ชันการทำงานของ Spring และการทำงามร่วมกันของ framework
Typical Full-fledged Spring Web Application
SpringSource Tool Suite (STS)
- Eclipse-powered development environment for building Spring-powered enterprise applications
- สนับสนุน Java, Spring, Groovy and Grails
- Comes with developer edition of vFabric tc Server (มาพร้อมกับเวอร์ชัน vFabric tc Server สำหรับนักพัฒนาซอฟต์แวร์)
- Pivotal tc Server คือ Tomcat ที่เหมาะสำหรับเพิ่มประสิทธิภาพให้ Spring
- สามารถใช้ Tomcat และ server อื่นๆกับ STS ได้
Spring Framework 5
มาดูการเปลี่ยนแปลงของ Spring Framework 5
- JDK baseline update – Spring Framework 5 จะต้องใช้ Java 8 เป็นต้นไป เพราะฉะนั้น Java 7 ลงไป หมดสิทธิ์
- Core framework revision – Core ได้รับการปรับปรุงเพื่อคุณสมบัติใหม่สำหรับ Java 8
- Functional programming with Kotlin – Spring Framework 5 มีฟังก์ชันรองรับสำหรับภาษา Kotlin
- Reactive Programming Model – ฟีเจอร์ที่น่าสนใจที่ Spring ปล่อยมาใหม่ Reactive Stack Web Framework(Spring Web Flux) ซึ่ง ฟีเจอร์ที่ปล่อยมาใหม่นี้เหมาะสำหรับเหตุการณ์แบบวนลูปที่สามารถปรับขนาดของสเกลได้เล็กน้อยเท่านั้น
- Testing improvements – Spring Framework 5.0 ซัพพอร์ท Junit 5 Jupiter สำหรับการเขียน test และ ส่วนขยายของ Junit 5
- Library Supports – Spring Framework 5 อัพเกรดเวอร์ชั่นของไลบรารี่ ต่อไปนี้
- Jackson 2.6+
- EhCache 2.10+ / 3.0 GA
- Hibernate 5.0+
- JDBC 4.0+
- XmlUnit 2.x+
- OkHttp 3.x+
- Netty 4.1+
- Discontinued Support – แพ็คเกจที่ไม่ซัพพอร์ตกับ Spring Framework 5
- beans.factory.access
- jdbc.support.nativejdbc.
- mock.staticmock of the spring-aspects module.
- web.view.tiles2M. Now Tiles 3 is the minimum requirement.
- orm.hibernate3 and orm.hibernate4. Now, Hibernate 5 is the supported framework.
- Spring Framework 5 has also discontinued support for the following libraries – ไลบรารี่ที่ไม่สามารถใช้ได้กับ Spring Framework 5
- Portlet.
- Velocity.
- JasperReports.
- XMLBeans.
- JDO.
- Guava.