Spring Framework

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 ได้