/spring-boot-learning

🍀 Hướng dẫn tất tần tật về Spring Boot, Spring Cloud ☘️ Code mẫu tiếng việt, có bài viết hướng dẫn đi kèm hình ảnh dễ hiểu 🍄

Primary LanguageJavaMIT LicenseMIT

Hướng dẫn Spring Boot

Spring Boot 2.0 Mysql 5.6 JDK 1.8 Maven license

Spring Boot và tất tần tật tất cả mọi thứ liên quan tới nó, bạn đều có thể tìm kiếm tại đây.

Mỗi module đều có hướng dẫn chi tiết đi kèm.

🍆 loda.me 🍌

Spring Boot  |   Java  |   Github

English


Vì sao nên học Java?

Nguồn: Xem bài viết đầy đủ tại đây

Trước khi nói Spring Boot, chúng ta nói về nền tảng của nó, chính là Java.

Java ra đời năm 1991, tới nay thì đã gần 30 năm rồi. Và có một điều mà có lẽ ít lập trình viên biết, đó là tính tới năm 2018, nó vẫn là ngôn ngữ phổ biến nhất thế giới.

Cá nhân mình, thì mình thích cái cú pháp của Java, nó rõ ràng, dễ hiểu và dễ đọc. Ngoài ra, khái niệm OOP trong Java là chuẩn mực, kế thừa và interface đã khiến các dòng code trở nên đáng yêu hơn rất nhiều.

Khi được chạm tay vào những đoạn code siêu sao, cảm giác cực kì, cực kì khó tả ==' phê k tả được. Mặc dù quy tắc của Java rất đơn giản và không nhiều biến thể được hỗ trợ bởi thông dịch như Javascript hay Python, nhưng bạn vẫn không thể nào hết ngạc nhiên với Java được, bạn sẽ còn trầm trồ dù học nó bao lâu đi nữa.

Java được sử dụng trong nhiều lĩnh vực khác nhau, có thể là Frontend, có thể là Backend, có thể viết Game, Desktop App, Mobile App, xử lý dữ liệu lớn, Microservices, ML, AI, v.v.. nó len lỏi từng ngóc nghách của lập trình. Vì vậy, có kiến thức nền tảng là Java thì bạn rất rất có lợi, làm được rất nhiều thứ, mà dù cho có không sử dụng đến, nó vẫn sẽ giúp bạn học được các ngôn ngữ khác nhanh hơn.

Với một cộng đồng cực kì đông đảo và ngôn ngữ luôn cải thiện trong các version JDK về sau, mình tỉn rằng Java vẫn luôn là một khởi điểm tốt cho mọi lập trình viên.

Vì sao bạn nên học Spring?

Spring là một Framework, nên dù bạn có học nó, hay không học nó, bạn vẫn biết code Java thôi 😆

Nhưng nếu không học Spring hay Spring Boot thì bạn đã bỏ lỡ đi những điều thú vị mà Java có thể làm được. Chưa kể tới bỏ lỡ hàng tỉ cơ hội về nghề nghiệp, lương tỉ đô 😂 mặc dù mình biết nghề nghiệp cũng là phụ thôi, phải không các bạn, chúng ta làm vì đam mê! 😗

Spring là một framework java mãnh mẽ và phổ biến nhất hiện nay dành cho doanh nghiệp. Hoạt động trên nguyên lý Dependency Injection (DI) và IoC, nó giúp rút ngắn thời gian lập trình và test, giảm sự rườm rà trong code, giảm thiểu bottleneck.

Hệ sinh thái Spring hỗ trợ mọi layer từ frontend, backend, persistence, third-paty, hỗ trợ mọi kiến trúc từ củ chuối tới microservice, code thì lại dễ dàng, nâng cao hiệu năng của lập trình viên. Nó là ánh sáng le lói chọc xuyên đêm đen, giúp cuộc đời của một Java Developer có chút hi vọng lay lắt, và tiếp túc tồn tại (nghe cứ sai sai vấn đề 😂)

Còn rất nhiều thứ có thể kể về Spring nhưng vì bạn chưa biết thực ra nó là gì, nên có kể nữa cũng không tác dụng. Bây giờ bạn chỉ cần biết Spring và thằng con của nó (vâng, đặc biệt là thằng con của nó), Spring Boot là thứ bạn PHẢI HỌC khi tới với Java.

Để trả lời cho câu hỏi "học như lào?" thì bạn xem ở dưới.


this repo

Repository này chứa hàng tỉ code liên quan tới Spring Boot, mỗi thư mục đều có bài viết hướng dẫn chi tiết (Tiếng việt).


Nên

Bạn nên fork hoặc star repository này để nó lưu vào tài khoản Github của bạn. Lúc cần có thể đem ra học hoặc xem lại bất cứ lúc nào công việc yêu cầu.

Nên đọc bài viết dưới đây để biết bắt đầu từ đâu:

Không nên

Lướt dạo rồi té :'(


Cài đặt

🎄 Xem chi tiết hướng dẫn bằng video: https://www.youtube.com/watch?v=fEzH_08iti4

  1. Clone hoặc Download dự án này về máy
  2. Cài đặt IntelliJ IDEA
  3. Cài đặt Lombok Plugin
  4. Open folder
  5. Cấu hình Preferences | Build, Execution, Deployment | Compiler | Annotation Processors

Trong repo này gồm có

I. Spring Boot Basic

  1. basic-dependency-loosely-coupled: Hướng dẫn loosely coupled
  2. spring-boot-1-helloworld-@Component-@Autowired: 「SP-#1」Hướng dẫn @Component và @Autowired
  3. spring-boot-2-helloworld-@Primary - @Qualifier: 「SP-#2」@Autowired - @Primary - @Qualifier
  4. spring-boot-3-bean-life-cycle-@PostConstruct-@PreDestroy: 「SP-#3」Spring Bean Life Cycle + @PostConstruct và @PreDestroy
  5. spring-boot-4-@Component-@Service-@Repository: 「SP-#4」@Component vs @Service vs @Repository
  6. spring-boot-5-Component-Scan: 「SP-#5」Component Scan là gì?
  7. spring-boot-6-@configuration-@Bean: 「SP-#6」@Configuration và @Bean
  8. spring-boot-7-spring-application-properties-@Value: 「SP-#7」Spring Boot Application Config và @Value
  9. spring-boot-8-@Controller-web-helloworld: 「SP-#8」Tạo Web Helloworld với @Controller
  10. spring-boot-9-thymeleaf: 「SP-#9」Hướng dẫn chi tiết làm Web với Thymeleaf + Demo Full
  11. spring-boot-10-@PostMapping-@ModelAttribute-thymeleaf: 「SP-#10」@RequestMapping + @PostMapping + @ModelAttribute + @RequestParam + Web To-Do với Thymeleaf
  12. spring-boot-11-JPA-MySQL: 「SP-#11」Hướng dẫn Spring Boot JPA + MySQL
  13. spring-boot-12-jpa-method-and-@Query-@Param: 「SP-#12」Spring JPA Method + @Query
  14. spring-boot-13-spring-boot-thymeleaf-mysql-web: ⚡️「SP-#13 Special」 Chi tiết Spring Boot + Thymeleaf + MySQL + i18n + Web Demo
  15. spring-boot-14-restful-api-@RestController-@RequestBody-@PathVariable: 「SP-#14」 Restful API + @RestController + @PathVariable + @RequestBody
  16. spring-boot-15-@ControllerAdvice-@RestControllerAdvice-@ExceptionHandler-@ResponseStatus: 「SP-#15」 Exception Handling @ExceptionHandler + @RestControllerAdvice / @ControllerAdvice + @ResponseStatus
  17. spring-boot-16-@ConfigurationProperties: 「SP-#16」 Hướng dẫn sử dụng @ConfigurationProperties
  18. spring-boot-17-spring-profiles: 「SP-#17」 Chạy nhiều môi trường với Spring Profile
  19. spring-boot-18-testing-in-spring-boot: 「SP-#18」 Hướng dẫn chi tiết Test Spring Boot
  20. spring-boot-19-testing-in-spring-boot-2: 「SP-#19」 Hướng dẫn chi tiết Test Spring Boot (Phần 2)
  21. spring-boot-@Conditional: Hướng dẫn tạo Bean có điều kiện với @Conditional
  22. spring-boot-@Conditional-2-custom-conditional: Hướng dẫn tự tạo custom @Conditional
  23. spring-boot-@Lazy-Anotation: Annotation @Lazy trong Spring Boot
  24. spring-boot-webflux: Xây dựng ứng dụng Reactive với Spring 5 Webflux
  25. spring-configuration-properties: Hướng dẫn sử dụng Spring Properties
  26. spring-redis: Hướng dẫn Spring Boot Data + Redis cơ bản
  27. spring-boot-@EventListener-@Async: Xử lý sự kiện với @EventListener + @Async
  28. spring-boot-application-context-events: Các sự kiện của ApplicationContext
  29. spring-boot-swagger2: RESTful API Document Tạo với Spring Boot + Swagger
  30. spring-boot-swagger3-openapi3: RESTful API Document với Spring Boot + OpenApi 3.0

II. Spring Cloud (Đang xây dựng >.<)

  1. spring-cloud-config-server + spring-cloud-config-client: Hướng dẫn cấu hình nhiều properties bằng Spring Cloud Config Server

III. JPA & Hibernate

  1. spring-boot-jpa-auditing: Hướng dẫn Auditing với Hibernate + JPA
  2. jpa-hibernate-one-to-one: Hướng dẫn sử dụng @OneToOne
  3. jpa-hibernate-one-to-many: Hướng dẫn sử dụng @OneToMany và @ManyToOne
  4. jpa-hibernate-many-to-many: Hướng dẫn sử dụng @ManyToMany
  5. jpa-hibernate-pageable: Hướng dẫn Query phân trang bằng Pageable (Phần 1)
  6. jpa-hibernate-criteria: Hướng dẫn sử dụng Criteria API trong Hibernate (Phần 2)
  7. jpa-hibernate-specifications: [Spring JPA] Hướng dẫn sử dụng Specification (Phần 1)
  8. jpa-hibernate-custom-validation: Hướng dẫn tự tạo Validator để kiểm tra Model & Entity

IV. Security

  1. spring-security-example: Hướng dẫn Authorization với Spring Security (căn bản)
  2. spring-security-hibernate: Hướng dẫn Spring Boot + Security + H2 Database
  3. spring-security-hibernate-jwt: Hướng dẫn String Security + JWT (Json Web Token)

Others

  1. test-mockito-basic: [Test] Hướng dẫn toàn tập Mockito

Ngoài repo còn có

Có rất nhiều bài viết khác liên quan tới lập trình không nằm trong repo này, bao gồm hàng tỉ thứ xung quanh hệ sinh thái Java, Spring tại Loda.me

Lí do

Trong nhiều năm qua, tôi nhìn thấy sự xâm lăng đáng sợ của "nước láng giềng" trong lĩnh vực lập trình.

Tôi gần như có thể tìm kiếm hàng tá repository xịn xò của họ khi Explore trên Github. Thì đúng, là Github mà, không tìm thấy repo thì tìm thấy gì :))) nhưng cái điểm khác biệt đó là toàn bộ repo đều là tiếng Trung!

Tôi nghĩ đây cũng là một trong những yếu tố chính khiến "nước láng giếng" lại có nguồn Developer đông và giỏi chuyên môn như vậy (tạm bỏ qua yếu tố đông dân, xã hội, điều kiện sống, nền tảng giáo dục, v.v.. đúng là có ảnh hưởng lớn cực lớn đấy, nhưng các bạn đọc tiếp đã).

Họ chia sẻ tài liệu với nhau rộng rãi, hướng dẫn lập trình, open-source hàng tá những project lớn nhỏ, và tất cả đều viết bằng tiếng Trung, comment tiếng trung, quy tắc, mô tả, giải thích, v.v.. mọi thứ đều là ngôn ngữ bản địa. Nó giúp cho bất kì ai trong đất nước họ đều có thể tiếp cận và học tập được những kiến thức này, dễ hiểu mà lại cực kì nhanh.

Tôi không nói rằng Tiếng Anh là không đủ, nhưng nếu cầm trên tay 2 quyển sách tương đương về kiến thức, một tiếng việt, một tiếng anh. Bạn đọc quyển nào trước?

Thế đấy, tôi sẽ bắt đầu chỉa sẽ những repo tiếng việt lên Github để tất cả những developer là người Việt có thể tìm hiểu, đọc được và cùng nhau đóng góp. Xây dựng lên một cộng đồng developer Việt Nam ngày càng tốt hơn.

Hi vọng việc này sẽ giúp đỡ cho các tân binh mới vào nghề dễ dàng tiếp cận kiến thức mới và có lộ trình rõ ràng.

Giúp đỡ tôi bằng cách chia sẻ hoặc tặng sao

Thông tin liên hệ

Nếu có bất kỳ nội dung nào liên quan tới Spring Boot còn thiếu,hãy tạo issues cho nó, tôi sẽ theo dõi và cải thiện。

Mọi thông tin xin liên hệ: https://loda.me/about