hocvietcode.com
  • Trang chủ
  • Học lập trình
    • Lập trình C/C++
    • Cấu trúc dữ liệu và giải thuật
    • Lập trình HTML
    • Lập trình Javascript
      • Javascript cơ bản
      • ReactJS framework
      • AngularJS framework
      • Typescript cơ bản
      • Angular
      • NodeJS
    • Lập trình Mobile
      • Lập Trình Dart Cơ Bản
        • Dart Flutter Framework
    • Cơ sở dữ liệu
      • MySQL – MariaDB
      • Micrsoft SQL Server
      • Extensible Markup Language (XML)
      • JSON
      • MongoDB
    • Lập trình PHP
      • Lập trình PHP cơ bản
      • Laravel Framework
    • Lập trình Java
      • Java Cơ bản
      • Spring Boot
    • Lập trình C#
      • Lập Trình C# Cơ Bản
      • ASP.NET Core MVC
    • Lập trình Python
    • Git và Github
    • Machine Learning
  • WORDPRESS
    • WordPress cơ bản
    • WordPress nâng cao
    • Chia sẻ WordPress
  • Kiến thức hệ thống
    • Microsoft Azure
    • Docker
    • Linux
    • Mạng và truyền thông
  • Chia sẻ IT
    • Tin học văn phòng
      • Microsoft Word
      • Microsoft Excel
    • Marketing
      • Google Adwords
      • Facebook Ads
      • Kiến thức khác
    • Chia sẻ phần mềm
    • Review công nghệ
    • Công cụ – tiện ích
      • Kiểm tra bàn phím online
      • Kiểm tra webcam online
Đăng nhập
  • Đăng nhập / Đăng ký

Please enter key search to display results.

Home
  • Spring Boot
Spring Boot bài 27: Logging, Actuator và quản lý schema bằng Flyway
Java và Spring Boot – MVC và REST API

Spring Boot bài 27: Logging, Actuator và quản lý schema bằng Flyway

  • 18-10-2026
  • Toanngo92
  • 0 Comments

Giáo trình Spring Boot MVC và REST API · Chương 12/12: Quan sát, migration và triển khai · Bài 27/28 · Biên soạn tháng 10/2026.

← Bài 26 · Mục lục 12 chương · Bài 28 →

Mục lục

  • Mục tiêu bài học
  • Log phục vụ chẩn đoán một sự kiện cụ thể
  • Actuator: mở đúng endpoint cần dùng
  • Migration là lịch sử thay đổi có thứ tự
  • Chuẩn bị trước khi thay đổi dữ liệu thật
  • Lỗi thường gặp và lưu ý
  • Ghi nhớ
  • Tài liệu đối chiếu

Mục tiêu bài học

Quan sát ứng dụng đang chạy, công khai health có giới hạn và thay đổi schema bằng migration có phiên bản.

Log phục vụ chẩn đoán một sự kiện cụ thể

Log có ích cho biết ứng dụng đang làm gì và lỗi nào cần xử lý, không phải sao chép toàn bộ request vào console. Dùng logger tham số hóa như log.info("Số khóa học: {}", count) thay vì ghép chuỗi tùy tiện. Chọn mức INFO cho sự kiện vận hành, DEBUG cho chẩn đoán có kiểm soát và ERROR khi cần hành động phù hợp.

Không ghi mật khẩu, Authorization, CSRF token hoặc cookie session. Nếu thêm mã tương quan request, dùng nó để nối sự kiện qua các tầng; không lấy thông tin cá nhân làm mã log. Bật SQL logging chỉ trong môi trường phù hợp vì câu lệnh và tham số có thể chứa dữ liệu nhạy cảm.

Actuator: mở đúng endpoint cần dùng

Starter Actuator cung cấp endpoint vận hành. Mẫu chỉ expose health,info và chỉ công khai /actuator/health; info vẫn chịu quy tắc xác thực chung. Health không hiển thị chi tiết thành phần cho người chưa được phép. Không expose * để tiện kiểm tra rồi để nguyên khi triển khai.

GET /actuator/health trả tín hiệu tổng quan về tình trạng ứng dụng và dependency tham gia health check. Liveness/readiness có mục đích riêng trong môi trường điều phối; cần cấu hình và hiểu trước khi gắn health endpoint vào mọi cơ chế restart. Database chậm không nhất thiết là lý do khởi động lại vô hạn tất cả instance.

management.endpoints.web.exposure.include=health,info
management.endpoint.health.show-details=never
spring.jpa.open-in-view=false
spring.jpa.hibernate.ddl-auto=validate
spring.flyway.enabled=true

Migration là lịch sử thay đổi có thứ tự

V1__create_courses.sql đã tạo schema ban đầu. Khi cần thêm trường, viết V2__…sql thay vì sửa V1 trên database đã chạy. Flyway ghi phiên bản và checksum trong bảng lịch sử, giúp phát hiện nội dung migration bị đổi. Học cách đọc lỗi checksum quan trọng hơn thao tác repair theo thói quen.

Ví dụ V2 dưới chỉ minh họa một thay đổi additive chưa được thêm vào gói mẫu hiện tại. Nếu áp dụng, lưu đúng một tệp migration mới, chạy trên database thử rồi kiểm tra Entity/DTO tương ứng theo nhu cầu. Không dùng clean trên database production và không coi migration đã chạy thành công là có thể hoàn tác dữ liệu tự động.

-- Ví dụ tùy chọn: V2__add_course_summary.sql
ALTER TABLE courses ADD COLUMN summary VARCHAR(500) NULL;

Chuẩn bị trước khi thay đổi dữ liệu thật

Backup cần có khả năng restore đã kiểm tra. Với bảng lớn, thêm chỉ mục hoặc cột có thể khóa hay tốn thời gian; cần xem kế hoạch triển khai trên đúng hệ quản trị. Thay đổi phá vỡ tương thích giữa mã cũ và schema mới nên được chia thành nhiều bước khi cần rolling deployment.

HVC Academy dùng validate để ứng dụng không tự sửa schema khác với migration. Dữ liệu seed được gắn với migration cho mục đích học; hệ thống thật nên phân biệt dữ liệu bắt buộc với dữ liệu demo, tránh vô tình tạo nội dung thử mỗi khi triển khai. Log, health và migration cùng cung cấp bằng chứng để vận hành có kiểm soát.

Lỗi thường gặp và lưu ý

  • Không sửa migration đã áp dụng rồi dùng repair chỉ để bỏ qua sai khác chưa hiểu.
  • Health endpoint không thay thế đo độ trễ, lỗi request, dung lượng và backup của toàn hệ thống.

Ghi nhớ

Quan sát và thay đổi schema là một phần của ứng dụng; hãy giữ endpoint hẹp, log có ích và migration có lịch sử.

Tài liệu đối chiếu

  • Actuator endpoints
  • Database Initialization

← Bài 26 · Mục lục 12 chương · Bài 28 →

Bài viết liên quan:

Java và Spring Boot – MVC và REST API
Spring Boot bài 22: Validation API, ProblemDetail và hợp đồng lỗi
Java và Spring Boot – MVC và REST API
Spring Boot bài 23: Gọi dịch vụ HTTP bằng RestClient và đặt timeout
Java và Spring Boot – MVC và REST API
Spring Boot bài 08: Fragment, layout và tài nguyên CSS trong Spring Boot
Java và Spring Boot – MVC và REST API
Spring Boot bài 24: Gửi email và lập lịch tác vụ trong Spring Boot
Java và Spring Boot – MVC và REST API
Spring Boot bài 09: Binding biểu mẫu tạo và sửa khóa học
Java và Spring Boot – MVC và REST API
Spring Boot bài 25: Unit test Service với JUnit và Mockito
Java và Spring Boot – MVC và REST API
Spring Boot bài 10: Validation và BindingResult: báo lỗi ngay trên biểu mẫu
Java và Spring Boot – MVC và REST API
Spring Boot bài 26: Integration test MVC, API, database và Security
Java và Spring Boot – MVC và REST API
Spring Boot bài 11: Post/Redirect/Get, flash message và session
Java và Spring Boot – MVC và REST API
Spring Boot bài 28: Đóng gói JAR, Docker và cấu hình triển khai
Java và Spring Boot – MVC và REST API
Spring Boot bài 12: JPA Entity, Repository, H2 và migration đầu tiên
Java và Spring Boot – MVC và REST API
Giáo trình Spring Boot MVC và REST API 2026: 12 chương, 28 bài

Dịch vụ thiết kế Wesbite

NỘI DUNG MỚI CẬP NHẬT

Kiến trúc máy tính: CPU, RAM, ALU, bus và bộ nhớ cache

Kiến trúc máy tính – Bài 4: RAM, cache và bộ nhớ ảo khác nhau thế nào?

Kiến trúc máy tính: CPU, RAM, ALU, bus và bộ nhớ cache

Kiến trúc máy tính – Bài 3: CPU điều khiển và trao đổi dữ liệu qua bus thế nào?

Kiến trúc máy tính: CPU, RAM, ALU, bus và bộ nhớ cache

Kiến trúc máy tính – Bài 5: Thiết bị vào/ra, ngắt, DMA và RAID

Kiến trúc máy tính: CPU, RAM, ALU, bus và bộ nhớ cache

Kiến trúc máy tính – Bài 2: CPU thực hiện phép tính 5 + 3 như thế nào?

Kiến trúc máy tính: CPU, RAM, ALU, bus và bộ nhớ cache

Kiến trúc máy tính – Bài 1: Máy tính hoạt động như thế nào?

Giới thiệu

hocvietcode.com là website chia sẻ và cập nhật tin tức công nghệ, chia sẻ kiến thức, kỹ năng. Chúng tôi rất cảm ơn và mong muốn nhận được nhiều phản hồi để có thể phục vụ quý bạn đọc tốt hơn !

Liên hệ quảng cáo: [email protected]

Kết nối với HỌC VIẾT CODE

© hocvietcode.com - Tech888 Co .Ltd since 2019

Đăng nhập

Trở thành một phần của cộng đồng của chúng tôi!
Registration complete. Please check your email.
Đăng nhập bằng google
Đăng kýBạn quên mật khẩu?

Create an account

Welcome! Register for an account
The user name or email address is not correct.
Registration confirmation will be emailed to you.
Log in Lost your password?

Reset password

Recover your password
Password reset email has been sent.
The email could not be sent. Possible reason: your host may have disabled the mail function.
A password will be e-mailed to you.
Log in Register
×