Spring คือ Framework ที่ได้รับความนิยมเป็นอันดับ 1 สำหรับ Java ในปัจจุบัน บทบาทของ Spring นั้นมีมากมายและสำคัญยิ่ง (เห็นได้จาก Projects ที่มีมากมายนับสิบตัว)
ตั้งแต่การยกระดับ Java ให้รวดเร็ว มีประสิทธิภาพ ใช้งานง่ายขึ้น และช่วยให้ Java Application ปลอดภัยมากขึ้นด้วย
ไม่ต้องสงสัยเลยว่า Spring จึงเป็นที่นิยมของเหล่านักพัฒนา จากการสำรวจของ Stackoverflow ในปี 2020 พบว่า Spring เป็น Web Framework ลำดับที่ 6 ที่เป็นที่รักมากที่สุด
ปัจจุบันมี Application จำนวนมหาศาลที่ถูกสร้างขึ้นโดยใช้ Spring ไม่ว่าจะเป็น Web Application หรือ Apps อื่นๆ อีกมากมายครับ
ดังนั้นถ้าคุณเป็น Java Developer ทักษะการใช้งาน Spring จึงเป็นสิ่งที่อาจจะเรียกว่าขาดไม่ได้เลยทีเดียว (90% ของการใช้งาน Java นั้นต้องมี Spring ประกอบอยู่ด้วย)
ในโพสนี้ ผมจะมาแนะนำว่าคอร์สที่สอน Spring ออนไลน์มีคอร์สไหนที่น่าเรียนบ้างครับ
ข้อควรทราบ:
- ในการเรียนคุณจะต้องเรียน Java มาก่อน และใช้งานได้ดีในระดับหนึ่ง
- ราคาคอร์สมีโอกาสสูงที่จะเปลี่ยนได้ เพราะคอร์สของ Udemy มักลด 90% ครับ
ว่าด้วย Spring Projects
เนื่องจาก Spring เป็น Java Framework ที่มีขนาดใหญ่มาก เพราะ Projects แยกย่อยออกไปนับ 10 ตัวเลยทีเดียวครับ
บางคอร์สจะสอนครอบคลุมตัวหลักแทบทุกตัวเลยก็ว่าได้ ขณะที่บางคอร์สจะสอนเน้นไปที่ Spring Boot เท่านั้นครับ
ในส่วนนี้คุณจึงควรเลือกตามความต้องการของคุณ เช่นถ้าคุณยังไม่เคยเรียน Spring มาก่อนเลย คุณอาจจะเลือกคอร์สแบบ All-in-one ก่อน แต่ถ้ามีประสบการณ์มาบ้างแล้ว อาจจะพิจารณาคอร์สที่สอนเจาะลึก projects ตัวใดตัวหนึ่งครับ
แนะนำแพลตฟอร์ม
คอร์สที่ผมจะแนะนำทุกคอร์สล้วนแต่อยู่ในแพลตฟอร์มอย่าง Udemy
สมมติว่าถ้าคุณไม่เคยรู้จัก Udemy มาก่อนเลย ผมแนะนำให้อ่านบทความแพลตฟอร์มเรียนออนไลน์ของผมก่อนครับ คุณจะได้ทราบเงื่อนไขรวมไปถึงข้อดีข้อเสียครับ
อีกสิ่งหนึ่งที่ผมต้องเน้นคือ Udemy นั้นมีลด 90% แทบทุกสัปดาห์ ทำให้คอร์สเหลือราคาไม่ถึง 500 บาท ดังนั้นคุณควรจะซื้อในช่วงลดราคาเท่านั้น
ถ้าเกิดว่าคอร์สไม่ลดราคา ผมแนะนำให้รอ 2-5 วันครับ หรือว่าสมัครแจ้งเตือนกับ Victory Tale ก็ได้เช่นกัน
คอร์สสอน Spring แบบ All-in-one
เราจะมาเริ่มต้นที่คอร์สแบบรวมมิตรกันก่อน คอร์สเหล่านี้จะสอน Spring แบบ All-in-one เช่นอาจจะสอนทั้ง Spring Boot, Spring MVC และ Spring Cloud เลยเป็นต้น
1. Spring & Hibernate for Beginners (includes Spring Boot)
คอร์สสอน Spring Framework แบบ All-in-one ที่จัดทำโดย Chad Derby นักพัฒนา Java ประสบการณ์สูงมากที่เคยเขียนหนังสือที่ได้รับความนิยมมาแล้วหลายเล่ม นอกจากนี้ยังมี Java Certifications จาก Oracle และ IBM ด้วยครับ
ในคอร์สนี้จะสอนคุณสร้างโปรเจคโดยใช้ Spring Projects หลากหลายตัว ตั้งแต่ Spring REST, Spring Boot, Spring MVC จาก scratch และเรียนรู้ฟีเจอร์ต่างๆ ของ Spring 5 อีกด้วย
รูปแบบการสอนในคอร์สก็จะผสมกันไปแบบลงตัว ไม่ว่าจะเป็นแบบทฤษฎีหรือปฏิบัติครับ
รายละเอียดของเนื้อหามีดังต่อไปนี้
- แนะนำพื้นฐานของ Spring และ Spring 5 รวมไปถึง Core Framework
- Set Up ในส่วนของ Development Environment
- อธิบายในส่วนของ Spring Inversion of Control และ Spring Dependency Injection
- Bean Scopes/Lifecycle
- เจาะลึก Spring Configuration
- Spring MVC ตั้งแต่การสร้าง Web Apps, สร้าง Controllers และ Views, Request Params/Mappings และ Form Tags/Data Binding
- อธิบายละเอียดในส่วนของ Spring MVC Form Validation เช่นการใช้ Buildin Validation Rules หรือสร้าง custom validation rules
- การใช้งาน Hibernate ตั้งแต่ Configuration, CRUD Features, Advanced Mappings (ในส่วนสุดท้ายนี้ละเอียดมาก)
- Project 1: ลองสร้าง Database Web App โดยใช้ Spring MVC
- การใช้งาน Spring AOP อย่างเช่น Pointcut Expressions, @Before Advice, @After Returning Advice หรือการใส่ AOP Logging เข้าไปใน Spring MVC app
- แนะนำการใช้งาน Maven (ไม่ละเอียดนักเพราะเป็น Crash Course)
- เจาะลึกในส่วนของ Spring Security ตั้งแต่การจัดการ Login/Logout, User Roles รวมไปถึง Password Encryption และ Database Authentication (มี 1 โปรเจคให้ได้ลองทำเกี่ยวกับ Password Encryption)
- อธิบายการใช้ Spring REST อย่างละเอียด ตั้งแต่การสร้าง REST Controller ไปจนถึง Best Practices สำหรับการออกแบบ API
- Project 2: CRUD Database Real-time Project เพื่อเสริมทักษะในการใช้งาน Spring REST
- ปิดท้ายคอร์สด้วยเนื้อหา Spring Boot และ Thymeleaf ภายในเนื้อหาส่วนนี้คุณจะได้ทำโปรเจคย่อย 4 ชิ้น ด้วยกัน
- และอื่นๆ อีกมากมาย
รวมแล้วเนื้อหามีทั้งหมด 41 ชั่วโมงด้วยกัน และครอบคลุม projects หลักของ Spring ทั้งหมดเลยก็ว่าได้
สิ่งที่โดดเด่นในคอร์สนี้คือ ผู้สอนมีส่วนของ FAQ อยู่ตลอดคอร์ส ซึ่งจะอธิบายคำถามที่พบบ่อยให้คุณทราบครับ นอกจากนี้ยังมี Practice Activity หรือแบบฝึกหัดย่อยที่จะช่วยลับความคมของทักษะของคุณด้วยครับ
ในการบรรยาย ผมได้ตรวจสอบดูแล้วพบว่าทุกอย่างชัดเจนมาก นอกจากนี้ยังมี Auto-sub ภาษาไทยให้ใช้งานด้วยครับ ดังนั้นผมเชื่อว่าคุณเรียนได้อย่างสบายๆ โดยไม่มีปัญหาอะไร
ทั้งนี้เนื้อหาในช่วงต้นคอร์สมาจนถึง Bean Scopes ทางผู้สอนให้คุณเรียนฟรีครับ ดังนั้นผมแนะนำให้คุณลองเรียนเลยครับ
คอร์สนี้เป็นคอร์สสอน Spring ที่ได้รับความนิยมสูงสุดเลยก็ว่าได้ เพราะมีผู้เรียนมากเกือบ 190,000 คน ส่วนคะแนนรีวิวได้สูงถึง 4.6/5.0 ครับ
2. Spring Framework 5: Beginner to Guru
คอร์สสอน Spring ของ John Thompson นักพัฒนา ๋Java ที่มีประสบการณ์ถึง 20 ปีด้วยกัน และเป็นผู้เชี่ยวชาญพิเศษในส่วนของ Spring Framework ด้วยครับ (เขาเคยเป็น Spring Source Consultant)
รูปแบบการสอนจะผสมผสานระหว่างภาคทฤษฎีและปฏิบัติ โดยจะมีโปรเจคต่างๆ ให้คุณได้ลองทำและเรียนรู้ผ่านการทำโปรเจคนั่นเองครับ
สิ่งที่คอร์สนี้ต่างจากคอร์สอื่นคือ คุณจะได้เรียน Spring ที่สามารถประยุกต์ใช้กับเครื่องมืออื่นๆ ด้วย อาทิเช่น MySQL และ MongoDB เป็นต้น
สิ่งที่คุณจะได้เรียนมีดังต่อไปนี้
- แนะนำพื้นฐานของ Spring Framework 5
- สอน Spring Boot ผ่านการสร้าง Web App และแนะนำ Spring Pet Clinic
- Dependency Injection ใน Spring
- Spring Framework Configuration
- เจาะลึกการพัฒนา Web Apps โดยใช้ Spring MVC
- JPA Data Modeling โดยใช้ Spring และ Hibernate
- การทำ Testing สำหรับ Spring Applications
- CRUD Operations และ Validation โดยใช้ Spring MVC (Part นี้ละเอียดมากๆ เพราะเนื้อหามากถึง 7 ชั่วโมงด้วยกัน
- แนะนำการใช้งาน Docker และ MySQL
- การเชื่อม MySQL เข้ากับ Spring Boot
- อธิบาย Reactive Programming กับ Spring และ MongoDB
- RESTful Web Services กับ Spring MVC
- การใช้ Swagger กับ Spring Boot
- Spring MVC Content Negotiation และ REST Docs
- JMS Messaging
- การทำ Troubleshooting สำหรับ Spring
- และอื่นๆ อีกมากมาย
รวมแล้วเนื้อหาทั้งหมดที่คุณจะได้เรียนจะอยู่ที่ 56.5 ชั่วโมงด้วยกัน ซึ่งถือว่าละเอียดที่สุดใน Udemy หรืออาจจะทั้งโลกในออนไลน์ด้วยซ้ำไป ในคอร์สเต็มไปด้วย Assignment ที่คุณจะได้ลองลงมือใช้งาน Spring ด้วยตนเองครับ
อย่างไรก็ดีผมมองว่าคอร์สนี้เน้นไปที่ Spring MVC และ Spring Boot เป็นพิเศษ ซึ่งถ้าคุณอยากจะเรียนสองตัวนี้อย่างละเอียด คอร์สนี้ถือเป็นทางเลือกที่น่าสนใจทีเดียวครับ
เสียงของครูผู้สอนฟังง่าย เพราะเป็นสำเนียงเจ้าของภาษาทั่วไปครับ ผมเชื่อว่าคุณจะไม่มีปัญหาใดๆ ในการเรียนอย่างแน่นอน
คอร์สนี้ได้คะแนนไป 4.4/5.0 จากนักเรียนเกือบ 63,000 คน
3. Learn Spring 5, Boot 2, JPA, Thymeleaf, AOP, Web MVC, REST
สำหรับใครที่กำลังหาคอร์สสอน Spring แบบกระชับๆ ไม่ยืดยาวจนเกินไป คอร์สของ Imtiaz Ahmad จะช่วยตอบโจทย์ของคุณครับ
ครูผู้สอนคนนี้เป็นอีกคนหนึ่งที่มี profile ดีเยี่ยม เขาเคยสร้างซอฟต์แวร์ระดับ Enterprise ให้กับสถาบันการเงินอันดับต้นๆ ของโลกอย่าง Goldman Sachs และ JP Morgan มาแล้วครับ
คอร์สนี้กระชับกว่า 2 คอร์สด้านบนอย่างชัดเจน เพราะมีเนื้อหาแค่ 16.5 ชั่วโมงเท่านั้น แต่ครอบคลุม projects หลักแทบจะทุกตัวของ Spring เลยทีเดียว
รูปแบบการสอนจะเป็นการแนะนำคอนเซปต์ผสมผสานกับ Real-world project ครับ โดยคุณจะได้เครื่องมือตัวอื่นๆ นอกจาก Spring ในการทำโปรเจคด้วย
รายละเอียดของเนื้อหามีดังต่อไปนี้
- การ Set up Development Environment และพื้นฐานของ Spring MVC
- Project: สร้าง PMA Web App โดยใช้ Thymeleaf, Spring Data JPA และ Entity Relationships
- Seeding Database
- ใช้ JavaScript และ CSS Files โปรเจคของคุณ
- Concept ของ Spring อื่นๆ อาทิเช่น Dependency Injection, Component Scanning
- การใส่ PostgreSQL ในโปรเจคของคุณ
- การทำ Spring Integration Testing
- Deployment ไปยัง AWS โดยใช้ EC2 และการทำ Containerizing โดยใช้ Docker และ AWS RDS
- Spring AOP และการทำ Logging
- อธิบายในส่วนของ Spring Security และ RESTful Web Services API ของ Spring
- และอื่นๆอีกมากมาย
ในเรื่องการบรรยายนั้น แม้ผู้สอนจะไม่ได้เป็นเจ้าของภาษา แต่ต้องบอกเลยว่าสำเนียงของเขาชัดเจนและฟังง่ายสุดๆ เลยครับ แต่ในการเรียนคุณต้องเรียน SQL มาก่อนด้วยครับ
คอร์สนี้ได้คะแนนรีวิวสูงมากถึง 4.7/5.0 จากนักเรียนกว่า 4,000 คน
คอร์สสอน Spring Boot
ลำดับต่อไปจะเป็นคอร์สสอน Spring Boot โดยเฉพาะครับ สำหรับใครอยากเจาะลึกในส่วนของ Spring Boot ก็สามารถมาเจาะลึกได้ที่คอร์สเหล่านี้ครับ
4. Spring Boot Microservices with Spring Cloud Beginner to Guru
สำหรับคอร์สนี้จะเป็นการสอนการสร้าง Microservices โดยใช้ Spring Boot, Spring Cloud และ Docker (เครื่องมือหลักคือสามตัวนี้ แต่มีตัวอื่นอีกมากเลยครับ) ส่วนผู้สอนคือ John Thompson คนเดิมครับ
ในการเรียนคอร์สนี้ คุณจะต้องใช้ Docker และ SQL ได้คล่องในระดับหนึ่งนอกเหนือไปจาก Java ด้วยครับ
เนื้อหาที่คุณจะได้เรียนได้แก่
- แนะนำ Microservices, Restful Web Services
- อธิบายการใช้งาน Spring MVC Rest Services/RestTemplate/Rest Docs
- Spring Boot RestTemplate
- Project Lombok และ MapStruct
- Processing JSON โดยใช้ Spring Boot
- จัดการ deconstruct ตัว monolith application
- Enterprise Dependency Management (ใช้ Maven)
- Local MySQL Configuration
- เจาะลึก JMS Messaging
- Spring State Machine และการใช้ Sagas กับ Spring
- Integration Testing
- Spring Cloud Gateway
- การทำ Service Registration และ Service Discovery โดยใช้ Netflix Eureka (เครื่องมือที่ช่วยจัดการ Microservices)
- Spring Cloud Configuration และการ securing
- สร้าง Docker Images โดยใช้ Maven
- จัดการ Logging โดยใช้ Elastic Stack
- Deploy โดยใช้ Docker Swarm
- และอื่นๆ อีกมากมาย
โดยรวมแล้วเนื้อหาคอร์สนี้แน่นถึง 38.5 ชั่วโมงด้วยกัน นอกจากนี้ภายในคอร์สยังมี assignment อย่างล้นเหลือให้คุณได้ฝึกฝนด้วยครับ
คะแนนรีวิวคอร์สนี้อยู่ที่ 4.5/5.0 จากนักเรียนกว่า 14,600 คน
5. Testing Spring Boot: Beginner to Guru
สำหรับคอร์สนี้จะสอนโดย John Thompson เช่นเดิม แต่จะเน้นที่การทำ Testing ตัว Spring Applications เท่านั้น ซึ่งจะต่างจากคอร์สอื่นๆ อย่างชัดเจนครับ
อย่างไรก็ดีคอร์สนี้ไม่ใช่สำหรับมือใหม่ที่ยังไม่เคยใช้ Spring Boot มาก่อนเลย กล่าวคือคุณจะต้องมีประสบการณ์การใช้ Spring Framework (Core) และ Spring Boot รวมไปถึง SQL มาก่อนครับ
เนื้อหาในคอร์สจะเน้นไปที่การใช้งาน JUnit และ Mockito ซึ่งเป็น Testing Libraries ของ Java เป็นหลัก แต่การ Testing รูปแบบอื่นก็มีเช่นกัน โดยจะมีรายละเอียดต่อไปนี้ครับ
- แนะนำ Testing framework สำหรับ Java และ Spring
- Test Driven Development โดยใช้ JUnit 5
- อธิบายพื้นฐานของ JUnit 5 และแนะนำการ Testing Java
- JUnit Testing ระดับสูง
- Test Execution
- อธิบายการใช้งาน Mockito
- การ Testing สำหรับ Spring Framework + Testing Context
- Spring MVC Test
- แนะนำ Testing กับ Spring Boot
- Spring MVC Rest Controller Tests (ใช้ JSON Path)
- การทำ Testing กับ Wiremock
- Spring MVC Rest Docs
- และอื่นๆ อีกมากมาย
ผมมองว่าคอร์สนี้น่าสนใจมาก เพราะการทำ Testing นั้นสิ่งที่สำคัญและจำเป็นยวดยิ่งสำหรับการพัฒนา Software ใดๆ ก็ตาม นักพัฒนาจึงควรมีความรู้ในส่วนนี้เอาไว้บ้าง ซึ่งคอร์สนี้จะอธิบายทุกอย่างที่คุณต้องการเลยครับ
สำหรับคะแนนรีวิวนั้นได้ไป 4.5/5.0 จากนักเรียนกว่า 11,600 คน
คอร์สสอน Spring แบบ Full Stack
หนึ่งในรูปแบบของการใช้งาน Spring ที่ได้รับความนิยมมากคือ การบูรณาการแบบ Full Stack กับ JavaScript Libraries หรือ Frameworks อย่างเช่น React หรือ Angular นั่นเองครับ
พูดง่ายๆ คุณอาจจะเรียนการสร้าง Application โดยใช้ Angular หรือ React เป็น Front-End และใช้ Spring เป็น Back-end
เรามาดูกันดีกว่าจะมีคอร์สไหนที่สอนในรูปแบบนี้บ้าง
6. Full Stack: Angular and Spring Boot
คอร์สนี้จะสอนการใช้งาน Angular กับ Spring Boot ในรูปแบบของ Full Stack Development ผู้สอนคอร์สนี้คือ Chad Derby (ผู้สอนคอร์สที่ 1 ครับ)
ในการเรียนคุณจะต้องมีความรู้ในส่วนของ Spring Boot มาก่อน เช่นเดียวกับ HTML&CSS และ JavaScript แต่ในส่วนของ Angular และ TypeScript นั้นไม่จำเป็นครับ
รูปแบบการเรียนจะเป็น project-based กล่าวคือคุณจะได้สร้างโปรเจคขนาดใหญ่ และการสอนจะล้อไปกับการทำโปรเจคตัวนี้ตลอดคอร์สครับ โปรเจคที่คุณจะได้ทำคือแบบ e-commerce นั่นเอง
- ปูพื้นฐาน Angular และ TypeScript (ยาวประมาณ 2.30 ชั่วโมง ถือว่าค่อนข้างสั้น ถ้าเรียนแล้วรู้สึกว่าไม่พอ อาจจะพิจารณาหาคอร์สเรียนเพิ่มครับ)
- Set Up Spring Boot เพื่อเป็น Backend ให้กับ Project ของคุณ
- ใช้ Angular ในการสร้าง Front End ไม่ว่าจะเป็น Product List, ใส่ online shop template
- เพิ่มฟีเจอร์การ search หาสินค้าโดยอิงจาก category และ keyword
- ใส่ Detail View, Pagination และสร้าง Shopping Cart
- สร้าง Checkout Form และการทำ Validation สำหรับการจ่ายเงินและการส่งสินค้า
- การ save ออเดอร์เข้าไปยัง database ทั้ง Backend และ Frontend
- และอื่นๆ อีกมากมาย
หลังจากคุณเรียนเนื้อหากว่า 17.5 ชั่วโมงจนครบสมบูรณ์ คุณจะได้สร้าง e-commerce app ที่ออกมาเป็นรูปเป็นร่าง ใช้งานได้จริง และพร้อมสำหรับการพัฒนาต่อไปครับ
คอร์สนี้ได้คะแนนรีวิวไป 4.6/5.0 จากนักเรียนเกือบ 60,000 คน
7. Full Stack Project: Spring Boot 2.0, ReactJS, Redux
คอร์สนี้ไม่ได้รับการอัพเดตมานานกว่า 2 ปี ดังนั้นเนื้อหาบางส่วนจะล้าสมัยไปแล้วครับ
ใครที่เป็น React Developer และอยากจะใช้ Spring Boot เป็น Backend คอร์สนี้คือคอร์สของคุณครับ ตัวคอร์สสอนโดยทีมงานของ Agile Intelligence สถาบันที่สอนการพัฒนาซอฟต์แวร์ด้วยแนวทาง project-based
รูปแบบการเรียนจะเหมือนกับคอร์สที่ 6 นั่นคือเป็นแนว project-based แต่จะเปลี่ยนจาก Angular มาเป็น React ที่ทำหน้าที่ในฐานะ FrontEnd ครับ
สิ่งที่คุณจะได้สร้างในคอร์สนี้คือ project management tool แบบ original ของคุณเองตั้งแต่เริ่มต้นครับ เราไปดูกันดีกว่าจะได้เรียนอะไรบ้าง
- Set Up ในส่วนของ Spring Backend (สร้าง REST API โดยใช้ Spring Boot สำหรับ CRUD Operations)
- สร้าง Front End โดยใช้ React และใช้ Redux สำหรับจัดการ state management
- การใส่ Project Tasks (จัดการทั้งใน Backend และ Frontend ส่วนนี้จะกินเนื้อหาส่วนใหญ่ของคอร์ส เพราะใช้เวลาทำถึง 7 ชั่วโมงเศษด้วยกัน)
- Secure App ในส่วนของ Backend ใช้ Spring Security และ JWT Tokens รวมไปถึงจัดการในส่วนของ User Registration
- Secure App ในส่วนของ React FrontEnd
- Deploy App ที่สร้างเสร็จแล้วไปยัง Heroku
ความยาวของเนื้อหาในคอร์สจะอยู่ที่ 25 ชั่วโมงครับ ซึ่งถือว่าครบถ้วนทีเดียว สำหรับการเรียนแบบ Full Stack
คะแนนรีวิวคอร์สนี้อยู่ที่ 4.4/5.0 จากนักเรียนกว่า 7,370 คน