How to use Spring Framework in the others application
การพัฒนาบริการด้วย Spring ในปัจจุบัน ได้รับความนิยมค่อนข้างมาก เนื่องจากในปัจจุบัน Spring ได้มีการปรับปรุง และพัฒนาให้สามารถใช้งานได้ง่ายขึ้นอย่างมาก ในปัจจุบัน มีตัวอย่างโปรเจคให้ทดลองเล่น และมีตัวอย่างในการต่อยอด เพื่อการพัฒนาอย่างมากมาย
วันนี้ … จึงได้เขียน Blog เพื่อสร้างจุดเริ่มต้นในการสร้าง Spring ซึ่งจะเป็นการเขียนแบบ How to นะครับ สามารถทำตาม Step นี้ได้เลย และหวังเป็นอย่างยิ่งว่า ผมจะช่วยสร้างจุดเริ่มต้นในการสร้าง Spring ในแบบง่ายๆ เพื่อการประยุกต์ใช้งาน ได้อย่างง่ายขึ้นนะครับ
เรามาเริ่มสร้าง Spring กันเลยยย…
ขั้นตอนที่ 1 การสร้าง Spring Project
ขั้นตอนที่ 2 การเพิ่ม Dependency ใน Package เพื่อเข้ามาใช้ในโปรเจค
ขั้นตอนที่ 3 การสร้าง New Project ซึ่งโครงสร้างโปรเจค ประกอบด้วย
- JAVA Package เพื่อใช้ในการเขียน Class ซึ่งประกอบด้วย การสร้าง Model, View และ Controller
- Resource ประกอบด้วย HTML Template, application.properties เพื่อกำหนดค่า Config ให้กับ Application
- Test ประกอบด้วย การสร้าง Unit Test สำหรับการทดสอบโปรแกรม
ขั้นตอนที่ 4 application.properties คือ ไฟล์ที่ใช้ในการกำหนดค่า Configuration เช่น การกำหนดการเชื่อมต่อ DB หรือการกำหนด Path ของ Template ของ UI
ขั้นตอนที่ 5 Controller คือ ไฟล์ที่ใช้ในการเขียน Business Logic
ขั้นตอนที่ 6 ทดสอบการทำงานด้วยการรัน “./mvnw spring-boot:run”
ขั้นตอนที่ 7 เรียกการแสดงผลบน localhost
ขั้นตอนที่ 8 การสร้างหน้าเว็บด้วย Thymeleaf โดยการสร้าง HTML file ใน Package template ที่ถูกสร้างตั้งแต่แรก
หมายเหตุ : Ctrl + Z เพื่อ Shutdown แล้ว Start ใหม่ “./mvnw spring-boot:run”
การใช้ Thymeleaf เพื่อสร้าง UI
ขั้นตอนที่ 1 ให้ import org.springframework.ui.ModelMap โดย สร้าง Model และสร้าง Controller เพื่อประมวลผลและส่งค่าไปยัง HTML
ขั้นตอนที่ 2 สร้าง HTML เพื่อรับค่าจาก Controller และ return “ชื่อเพจ” เพื่อส่งค่าไปยังเพจ HTML ที่ถูกสร้างขึ้น
การสร้าง Model เพื่อแสดงค่าหลายค่าจาก Controller เพื่อแสดงค่าใน HTML
การแสดงผลใน HTML มากกว่า 1 ค่าจะถูกส่งมาผ่าน Model
การสร้าง SpringBoot ในการ Upload Multiple Files และนำเข้า MySQL ด้วย Thymeleaf กับ Spring JPA Audit
Technologies ที่ใช้ ประกอบด้วย
- Java 8
- Maven 3.6.1
- SpringBoot
- Thymeleaf
- Bootstrap 4
SpringBoot Backend Implementation
ขั้นตอนที่ 1 การสร้าง SpringBoot project ให้ใช้ SpringToolSuite ในการสร้าง SpringBoot project โดยสร้าง dependencies
การเพิ่ม Maven “@EnableJpaAuditing” เพื่อการติดต่อกับฐานข้อมูล
ขั้นตอนที่ 2 การสร้าง Date Audit เพื่อตรวจสอบการ Upload File โดยการสร้าง createdAt, updatedAt โดยใช้ Framework ของ Spring
- “@EntityListeners annotation” เป็น callback listener classes โดยสามารถใช้ JPA entity listener class ของ Spring Data AuditingEntityListener
- “@MappedSuperClass annotation” ถูกใช้ในการกำหนดการย้ายข้อมูลไปที่ base class DateAudit โดยการขยายการทำงานเข้าไปในทุกๆ Audit Entity
ขั้นตอนที่ 3 การสร้าง FileModel เพื่อ Browse File และ Upload File
ขั้นตอนที่ 4 การกำหนด “@Transactional” ใน File Repository (FileRepository.java)
ขั้นตอนที่ 5 การสร้าง Controller ให้กับการ Upload Multiple Files (UploadFileController.java)
ขั้นตอนที่ 6 เพิ่ม Limit size ของการ uploaded file โดยสร้าง configuration ใน application.properties
ขั้นตอนที่ 7 การสร้าง Controller เพื่อ Download Files (FileInfo.java)
ขั้นตอนที่ 8 การสร้าง Controller เพื่อ Download File (DownloadFileController.java)
ขั้นตอนที่ 9 การเพิ่ม Configuration เพิ่มเติม
ขั้นตอนที่ 10 การสร้าง Main Class Implementation โดยการ set default timezone สำหรับ UTC โดยการเพิ่ม “@EnableTransactionManagement” และ “@PostConstruct” สำหรับการควบคุมเรื่อง TimeZone
ขั้นตอนที่ 11 การสร้าง Frontend ด้วย Thymeleaf ในหน้า Upload Form (uploadform.html)
ขั้นตอนที่ 12 การสร้างหน้า Download Form (listfiles.html)
การสร้าง RESTful Web Service ทำยังไง… มาเริ่มแบบง่ายๆ กันเลย…
ขั้นตอนที่ 1 สร้าง “@SpringBootApplication” และ “@RestController” บน Class DemoApplication และสร้าง GetMapping(“/hello”) เพื่อเรียก Get API
ขั้นตอนที่ 2 สร้าง URL Get API
ขั้นตอนที่ 3 สร้าง pom.xml
ขั้นตอนที่ 4 สร้าง Model เพื่อส่งค่าข้อมูล
ขั้นตอนที่ 5 สร้าง Controller
ขั้นตอนที่ 6 การสร้าง JAR
ตัวอย่าง การสร้าง Spring Boot แบบง่ายๆ อีก 1 โปรเจค
ขั้นตอนที่ 1 การสร้าง Controller เพื่อควบคุมการแสดงผลการทำงานในตอนเริ่มต้น
ขั้นตอนที่ 3 การสร้าง Exception เราจะสร้างใน Controller เพื่อใช้ในการแสดงผล Error ในกรณีที่ Service มีข้อผิดพลาด เนื่องจาก Class นี้ ถูกกำหนดเพื่อใช้ในการตรวจสอบ Response ที่ได้จาก Service โดยกำหนด “@ResponseStatus” เพื่อตรวจสอบ HTTP Status ซึ่งถ้าไม่พบ Resource ที่ได้กลับมา ก็จะแสดงผลด้วย Class นี้
ขั้นตอนที่ 4 การสร้าง Model เพื่อใช้ในการควบคุมค่าที่ได้จาก Service โดยการสร้าง Class ที่ประกอบด้วยการกำหนด “@Id” สำหรับ Column ที่เป็น Primary Key และ get, set ค่าต่างๆ โดยการกำหนดค่าว่าง สามารถใช้ “@NotBlank” และการกำหนดค่าที่เป็น Date สามารถใช้ “@CreatedDate” และ “LastModifiedDate” ได้เลย
คำสั่งที่ใช้ในการทดสอบการ Run เพื่อสั่งให้ Project ทำงาน
ทดสอบการเรียก GET Service API ด้วย localhost:8080/api/notes
Case Study จากการใช้งาน Spring Framework
- Building a RESTful Web Service
- Consuming a RESTful Web Service with AngularJS
- Consuming a RESTful Web Service with jQuery
- Consuming a RESTful Web Service with rest.js
- Accessing GemFire Data with REST
- Accessing MongoDB Data with REST
- Accessing data with MySQL
- Accessing JPA Data with REST
- Accessing Neo4j Data with REST
- Securing a Web Application
- Building an Application with Spring Boot
- Creating API Documentation with Restdocs
- Enabling Cross Origin Requests for a RESTful Web Service
- Building a Hypermedia-Driven RESTful Web Service