How to use Spring Framework in the others application

Top'p Kullawattana
6 min readMay 3, 2020

--

การพัฒนาบริการด้วย Spring ในปัจจุบัน ได้รับความนิยมค่อนข้างมาก เนื่องจากในปัจจุบัน Spring ได้มีการปรับปรุง และพัฒนาให้สามารถใช้งานได้ง่ายขึ้นอย่างมาก ในปัจจุบัน มีตัวอย่างโปรเจคให้ทดลองเล่น และมีตัวอย่างในการต่อยอด เพื่อการพัฒนาอย่างมากมาย

วันนี้ … จึงได้เขียน Blog เพื่อสร้างจุดเริ่มต้นในการสร้าง Spring ซึ่งจะเป็นการเขียนแบบ How to นะครับ สามารถทำตาม Step นี้ได้เลย และหวังเป็นอย่างยิ่งว่า ผมจะช่วยสร้างจุดเริ่มต้นในการสร้าง Spring ในแบบง่ายๆ เพื่อการประยุกต์ใช้งาน ได้อย่างง่ายขึ้นนะครับ

เรามาเริ่มสร้าง Spring กันเลยยย…

ขั้นตอนที่ 1 การสร้าง Spring Project

https://start.spring.io/

ขั้นตอนที่ 2 การเพิ่ม Dependency ใน Package เพื่อเข้ามาใช้ในโปรเจค

Add Spring Web, Thymeleaf (UI), Spring Boot DevTools

ขั้นตอนที่ 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

return index.html ใน controller

ขั้นตอนที่ 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

การเพิ่ม Configuration ใน application.properties

การเพิ่ม Maven “@EnableJpaAuditing” เพื่อการติดต่อกับฐานข้อมูล

การเพิ่ม @EnableJpaAuditing ผ่าน Maven
การเพิ่ม @EnableJpaAuditing ใน Controller

ขั้นตอนที่ 2 การสร้าง Date Audit เพื่อตรวจสอบการ Upload File โดยการสร้าง createdAt, updatedAt โดยใช้ Framework ของ Spring

การเพิ่ม @CreatedDate และ @LastModifiedDate เพื่อ Update ข้อมูล ใน Abstract Class
  • “@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

http://localhost:8080/hello

ขั้นตอนที่ 2 สร้าง URL Get API

ขั้นตอนที่ 3 สร้าง pom.xml

ขั้นตอนที่ 4 สร้าง Model เพื่อส่งค่าข้อมูล

ขั้นตอนที่ 5 สร้าง Controller

ขั้นตอนที่ 6 การสร้าง JAR

ตัวอย่าง การสร้าง Spring Boot แบบง่ายๆ อีก 1 โปรเจค

ขั้นตอนที่ 1 การสร้าง Controller เพื่อควบคุมการแสดงผลการทำงานในตอนเริ่มต้น

การสร้างหน้า Index โดยสร้าง Index Controller เพื่อควบคุมการแสดงผลในหน้า Index
การสร้าง Controller เพื่อ Get, Create, Update และ. Delete ใน NoteController

ขั้นตอนที่ 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

การเรียก Service ด้วย POSTMAN

--

--

Top'p Kullawattana

Coding Stylist of Kept by Krungsri, I have experience of 10 years in the design and implementation of enterprise applications.