- Giới thiệu
- Cài đặt
- Tạo Database
- Cấu hình ứng dụng
- Tạo Model
- TodoConfig
- Tầng Repository
- Tầng Service
- Tầng Controller
- Templates
- i18n
- Chạy thử ứng dụng
- Kết
Giới thiệu
Trong loạt series về Spring Boot này, chúng ta đã đi qua hết tất cả các kiến thức căn bản và cần thiết.
- [SB1] Hướng dẫn @Component và @Autowired
- [SB2] @Autowired - @Primary - @Qualifier
- [SB3] Spring Bean Life Cycle + @PostConstruct và @PreDestroy
- [SB4] @Component vs @Service vs @Repository
- [SB5] Component Scan là gì?
- [SB6] @Configuration và @Bean
- [SB7] Spring Boot Application Config và @Value
- [SB8] Tạo Web Helloworld với @Controller + Thymeleaf
- [SB9] Giải thích cách Thymeleaf vận hành + Expression + Demo Full
- [SB10] @RequestMapping + @PostMapping + @ModelAttribute + @RequestParam + Web To-Do với Thymeleaf
- [SB11] Hướng dẫn Spring Boot JPA + MySQL
- [SB12] Spring JPA Method + @Query
Hôm nay, chúng ta sẽ vận dụng toàn bộ kiến thức đã học để tạo ra website quản lý công việc bằng Spring Boot + Thymeleaf + MySQL.
Cài đặt
Chúng ta sẽ các dependencies sau:
- spring-boot-starter-web
- lombok
- spring-boot-starter-thymeleaf
- spring-boot-starter-data-jpa
- mysql-connector-java
pom.xml
Cấu trúc thư mục:


Tạo Database
script.sql
Thêm 1 record vào DB
Xem thử kết quả:

Cấu hình ứng dụng
Cấu hình là phần cực kì quan trọng rồi, chúng ta phải cung cấp cho Spring Boot các thông tin về Database và Thymeleaf.
Ngoài ra, tùy chỉnh một số thông tin để giúp chúng ta lập trình đơn giản hơn.
application.properties
Tạo Model
Tạo model Todo
liên kết tới bảng todo
trong Database.
Ngoài ra, chúng ta tạo thêm một đối tượng là TodoValidator
, có trách nhiệm kiểm tra xem một object Todo
là hợp lệ hay không.
Vậy là xong phần chuẩn bị Model
.
TodoConfig
Trong ứng dụng của mình, tôi muốn tự tạo ra Bean TodoValidator
.
Đây là lúc sử dụng @Configuration
và @Bean
đã học tại bài Spring Boot #6
config/TodoConfig.java
Tầng Repository
Tầng Repository, chịu trách nhiệm giao tiếp với Database. Chúng ta sử dụng Spring JPA.
repository/TodoRepository.java
Tầng Service
Tầng Service, chị trách nhiệm thực hiện các xử lý logic, business, hỗ trợ cho tầng Controller.
service/TodoService.java
Tầng Controller
Tầng Controller, nơi đón nhận các request từ phía người dùng, và chuyển tiếp xử lý xuống tầng Service.
controller/TodoController.java
Templates
Tầng Controller đã trả về templates, nhiệm vụ tiếp theo là sử dụng Template Engine để xử lý các templates này và trả về webpage cho người dùng.
index.html
listTodo.html
addTodo.html
success.html
failed.html
i18n
Trong các template, tôi có sử dụng các message tĩnh, những message này hỗ trợ đa ngôn ngữ.
Chúng ta định nghĩa các message này tại thư mục i18n
.
i18n/messages_vi.properties
i18n/messages_en.properties
Chạy thử ứng dụng
Chạy ứng dụng:
App.java
Truy cập địa chỉ: http://localhost:8085/

Vì chúng ta cấu hình Locale
là vi
, nên ngôn ngữ đều hiện Tiếng Việt, rất tuyệt :3
Bấm vào Xem danh sách công việc để tới /listTodo

Vì chúng ta đã insert 1 bản ghi vào Database từ trước, nên ở đây nó hiện ra 1 việc cần làm.
Bấm vào Thêm công việc để tới /addTodo

Bấm Add để lưu thông tin vào Database.

Vậy là giờ chúng ta có 2 công việc :3

Bây giờ giả sử dụng ta gửi lên request tạo ra một Todo không hợp lệ.
TodoValidator
sẽ trả về null -> thêm thất bại

Kết
Vậy là chúng ta đã đi được nửa Series Spring Boot.
Trong các phần tới, chúng ta sẽ tìm hiểu về cách làm RestAPI với Spring Boot, đây mới là phần mạnh mẽ của nhất.
💁 Nếu có, toàn bộ project / code mẫu được lưu trữ tại GitHub
🌟 Đây là một bài viết trong Series Làm chủ Spring Boot – Zero to Hero
Nếu bạn phát hiện bài viết có lỗi hoặc outdated, hãy báo lại giúp mình theo email: loda.namnh@gmail.com hoặc qua Nam Hoàng Nguyễn (facebook.com)