Category Spring / Spring Boot

สำหรับ Category นี้ เป็นการรื้อฟื้นงานด้าน Web เลยหลังากร้างรามาเกือบ 2 ปีครับ เขียนไปเรื่อยๆ จนพร้อม

[JAVA] Thread Pool ใน Java

ช่วงนี้งานเยอะครับ ผมได้รับมอบหมายงานให้ลองปรับระบบงานเดิม ให้มันรองรับงานได้มากขึ้น และหนึ่งในเทคนิคที่ผมเลือกใช้ การทำงานแบบ Asynchronous ครับ โดยการทำงานแบบนี้สิ่งคนสั่ง สั่งงานเสร็จปุ๊บ ไม่ต้องรอผลลัพธ์ครับ แล้วให้ระบบมันทำงานต่อไปจนเสร็จ และแจ้งค่อยแจ้งผลลัพธ์ให้ Client รับทราบครับ แล้ว ThreadPool มันเกี่ยวยังไงหละ เจ้า ThreadPool มันเป็นวิธีการนึงที่ช่วยในการจัดการกับ Resource ครับ ถ้าเป็นเมื่อก่อนเวลาเราจะแตกงานให้ใช้ CPU ของเครื่องให้มันคุ้มค่าสิ่งที่ทำกัน คือ การ New Thread แยกเลยครับ ตาม Code ตัวอย่างครับ ปล. Code นี้มีปัญหานะครับ Run ไปเรื่อยๆ จาก Code…

[SPRING] สร้าง Form Upload ไฟล์ และบันทึกข้อมูลครับ

หลังจากโดนมรสุมงานหนักมาตั้งแต่ต้นปีครับ กว่าจะได้กลับบ้านที่ก็ปาไป 3 ทุ่มกว่าๆ ถึง 4 ทุ่มและ เริ่มกลับมาทำ Thesis สักทีครับ สำหรับโจทย์ที่ผมเอามาเขียน Blog ครั้งนี้เป็นการ Upload File จากนั้น Save ที่ไฟล์ที่ Server ครับ พร้อมกับบันทึกข้อมูลที่ป้อนเข้ามาจาก User ครับ เตรียมตัว Just Coding ครับ สังเกตุดีๆ ผมมี Property ที่เกี่ยวกับ Multipart ชื่อ BPMNFile ครับ โดย Property นี้ ผมกำหนดเป็น @Transient  ครับ…

[SPRING] ตรวจสอบข้อมูลก่อน Save ด้วย hibernate validator ครับ

หลังจาก Blog ตอนที่แล้วผมได้ลองทำ CRUD โดยใช้ Spring Boot ในเรื่องการการจัดการข้อมูล Person ไปแล้วนะครับ แต่ Blog ตอนล่าสุดของผมยังทิ้งท้ายอยู่นะครับ ว่ามันควรจะมีเรื่องของการ Validate ข้อมูลครับ คราวนี้ ผมเขียนตัว Validate ให้มันสมบูรณ์ครับ ซึ่ง Package ที่ผมใช้ hibernate validator ซึ่งเข้าตัวนี้มันเข้ามากับตอนที่เราใส่ Dependency Spring JPA แล้วครับ มาทำเลยดีกว่า สิ่งที่ต้องมี มาลุยกันเลยครับ – ชั้น Entity ที่เก็บ POJO Class – ชั้น…

[SPRING] มาใช้จัด Layout ให้กับ UI (Thymeleaf) ครับ

จาก Blog ตอนที่ที่ได้สร้างเว็บที่มี CRUD ต่อกับฐานข้อมูลแล้ว แต่ยังพบปัญหาว่ามันยังมี Code ที่ซ้ำซ้อนในส่วนของ UI เช่น พระเอกที่จะมาช่วยเราในครั้งนี้ คือ thymeleaf-layout-dialect มาดูโจทย์กันก่อน สิ่งที่ต้องมี เว็บตัวอย่างแหละ ปกติผมจะอ้างอิงจาก Blog ตอนก่อน แต่จะสร้างใหม่ก็ได้นะ และมาตรวจสอบ Dependency ว่าจะต้องมีของดังนี้ Let’s Refactoring จากไฟล์  mainLayout.html  ครับ โครงสร้าง ณ ตอนนี้ครับ มาแก้ไขไฟล์อื่นๆครับ ยกตัวอย่างเฉพาะของ ไฟล์ที่เสร็จแล้วครับ เพิ่ม Layout >> … · pingkunga/LearnSpringBoot@95e8c29 (github.com)…

[SPRING] ลองต่อฐานข้อมูลกันหน่อย

จาก Blog ที่แล้วไปลองใช้ Thymeleaf ไปแล้วกับการแสดงผลให้สวยงานครับ แต่อันนั้นข้อมูลที่ได้เกิดจากการ Mock จากชั้น Service ครับ สำหรับ Blog ตอนนี้มีเป้าหมาย หัวข้อประมาณนี้ สิ่งที่ต้องเตรียม ต่อ Database ต้องมีการเพิ่ม Dependency เพิ่มครับ มาลุยกันเลยครับ ถ้าเพิ่มข้อมูลเกี่ยวกับ Person ก็ต้องมีหน้าจอ 2 จอ แก้ไขไฟล์ application.properties  สำหรับการเชื่อมต่อฐานข้อมูล persondb ครับ อย่าลืมไปเอา exclude = {DataSourceAutoConfiguration.class}  ออกจาก @SpringBootApplication  ที่ไฟล์ [ชื่อ Project]Application.java  ด้วยนะครับ เดี๋ยวจะต่อ DB ไม่ได้เอา…

[SPRING] ทำความรู้จักกับ Thymeleaf

จาก Blog ตอนที่แล้วที่ได้ทดสอบ สวัสดีชาวโลก บน Spring Framework กันไปแล้วครับ แต่เว็บของเรามันไม่ได้มีหน้าตาอะไรเลย มีแต่ข้อความอย่างเดียวครับ วันนี้ผมจะมาเพิ่มหน้าจอในส่วนของ View นะครับ สิ่งที่ต้องเตรียม งานจาก Blog ตอนก่อนครับ ถ้าไม่มีสามารถเพิ่ม Dependency ลงในไฟล์ pom.xml ได้ครับ <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId> </dependency> หรือจะใช้ Spring Initializr ก็ได้ครับ รู้จักกับ Thymeleaf กันก่อนครับ เป็น Template Engine โดยหลักเราเขียน View ด้วย HTML แหละครับ แต่มี Tag…

[SPRING] สวัสดีชาวโลก

หลังจาก Blog ตอนที่แล้ว ผมได้เขียนเกี่ยวกับเขียน Spring โดยใช้ VSCode ครับ ซึ่งจาก Blog ตอนก่อน ยังติดปัญหาอยู่ที่ว่าเว็บทำงานแล้ว แต่ไม่มีการแสดงผลอะไรทั้งนั้นเลย ซึ่งใน Blog ตอนนี้ผมจะมาทำ Hello world ครับ สิ่งที่ต้องเตรียม งานที่ทำจาก Blog ตอนก่อนหน้าครับ ถ้าไม่ได้เริ่มมาจาก Blog ผม ก็สามารถเพิ่ม Dependency ไปที่ไฟล์ pom.xml  ดังนี้ <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> ลุยยเลยครับ มาดูโครงสร้างของ Project กันก่อนครับ src…

[SPRING] ใช้ VSCode ในการเขียน Spring Boot กัน

มาลองใช้งาน Spring Boot โดยใช้ VSCode กันครับ สำหรับ Blog นี้ เนื่องจากหลายๆงานในปัจจุบันหันมาใช้ VSCode กันติดแล้ว เพราะมันเร็ว ง่าย และไม่ซับซ้อนครับ โดยวันนี้ผมลองมาฟื้นฟูทักษะ Java ด้วย หายไปกับ .Net Framework กับ Power Shell หลายปีครับ สิ่งที่ต้องเตรียม ติดตั้ง JDK (Java Development Kit) SET JAVA_HOME ครับ ติดตั้ง VSCode ลุยกันเลย มาที่ VSCode เปิดมาแล้ว…

Inversion of Control (IoC)

Inversion of Control หรือ IoC มันเป็นจุดขายของตัว Spring Framework จนหลายๆเจ้าเอาไปปรับใช้เข้ากับ Product ของตัวเองครับ (Microsoft ASP.NET MVC ก็ใช้นะ) ก่อนจะไปใช้กัน เรามารู้กัดีกว่า เจ้าตัว Inversion of Control หรือ IoC มัน คือ อะไรครับ Inversion of Control หรือ IoC คือ อะไร มีประโยชน์อย่างไร มันมีมาเพิ่มลดความผูกแน่นติดกันของ Object ครับ ตาม Quote นี้เลย Do…

[Spring 4.x] Overview กันสักหน่อย

จาก Blog ในตอนที่แล้ว เราได้ใช้ Spring ไปแล้ว หลายคนอาจจะใช้แบบไม่รู้ตัวก็ได้ครับ ที่นี้เรามาดูภาพรวมของ Spring ดีกว่า ว่ามันมีอะไรบ้างครับ Spring ไม่ได้เกิดมาเพื่อทำเว็บอย่างเดียวนะครับ โดยที่เรารู้จักกันเยอะเป็น Spring MVC กลับมาที่ Spring ดีกว่าครับ Spring มันเป็น Framework  ที่เกิดจากความโหดร้ายของ EJB ใน J2EE ครับ อาทิ เช่น ไม่ต้องการ App Server ตัวใหญ่ๆ การ Implement ที่ต้องเขียน Code เยอะแยะ Code ผูกกับตัว…