Thẻ

#spring

99 Ngày Spring — Ngày 58: Spring Boot Actuator

Boot 3 mặc định chỉ lộ health; bản đồ endpoint an toàn và nguy hiểm; HealthIndicator tự viết với liveness tách khỏi readiness cho Kubernetes, info từ build và git, metrics Micrometer với tag hữu hạn — và ba lớp khóa: cổng riêng, SecurityFilterChain với EndpointRequest, exclude env/heapdump/threaddump.

23 thg 9, 202610 phút5
So sánh EasyExcel và Apache Fesod: khác biệt thật nằm ở đâu?

Fesod là hậu duệ của EasyExcel, cùng engine SAX/SXSSF. Khác biệt kiểm chứng được: vòng đời dự án, POI 5.2.5 vs 5.5.1, các API mới (numRows, csv(), headerMergeStrategy) và độ bền với file xấu — không phải hiệu năng gấp nhiều lần.

23 thg 9, 20268 phút1
99 Ngày Spring — Ngày 57: Test data & fixtures

Builder với mặc định hợp lệ để test chỉ nói điều nó quan tâm, @TestComponent gói builder với repository, @Sql cho dữ liệu nhiều hay legacy với bẫy method ghi đè class, ba bẫy script SQL — và chiến lược dọn dẹp: rollback, TRUNCATE trước mỗi test, dữ liệu duy nhất, còn @DirtiesContext thì không.

22 thg 9, 202612 phút1
99 Ngày Spring — Ngày 56: Mock bean & test security

@MockitoBean chỉ cho thứ ngoài biên giới và mỗi bộ mock khác nhau là một context mới, @WithMockUser với bẫy roles và authorities, jwt() test luật phân quyền mà không cần token thật — và kim tự tháp test cho security.

21 thg 9, 202611 phút3
99 Ngày Spring — Ngày 55: Testcontainers

Phụ thuộc thật trong Docker thay vì thứ gần giống, @ServiceConnection biến sáu dòng cấu hình thành một annotation, một container cho cả bộ test — và bức tranh khép lại năm ngày kiểm thử.

20 thg 9, 20268 phút10
99 Ngày Spring — Ngày 54: @SpringBootTest

Khi nào test tích hợp mới xứng đáng, vì sao RANDOM_PORT là lựa chọn đúng, cache context quyết định bộ test chạy hai phút hay bốn mươi phút — và vì sao @WithMockUser hoàn toàn vô nghĩa ở đây.

19 thg 9, 20268 phút6
99 Ngày Spring — Ngày 53: @DataJpaTest

Mỗi test là một transaction bị rollback, flush và clear quyết định test có chứng minh được gì không, vì sao "xanh trên H2 chết trên production" làm cả đội mất niềm tin — và Testcontainers với @ServiceConnection.

18 thg 9, 20268 phút6
99 Ngày Spring — Ngày 52: @WebMvcTest & MockMvc

Slice test nạp đúng tầng web nên mọi service phải khai @MockitoBean, MockMvc gọi thẳng DispatcherServlet không cần server, đây là nơi duy nhất chứng minh @Valid và @ControllerAdvice thật sự chạy — cùng cái bẫy 401 khiến nhiều người bỏ cuộc.

17 thg 9, 20267 phút7
99 Ngày Spring — Ngày 51: Unit test tầng service

Service là class Java bình thường nên test nó không cần Spring — vài mili-giây thay vì vài giây; Mockito với Mock và InjectMocks, verifyNoInteractions khẳng định điều không xảy ra, và bốn cái bẫy tạo ra test luôn xanh mà vô dụng.

16 thg 9, 20267 phút7