Spring Boot là một framework giúp đơn giản hóa việc phát triển ứng dụng Java, đặc biệt trong môi trường web. Nó kế thừa triết lý "convention over configuration" từ Spring, cho phép khởi chạy ứng dụng chỉ với vài dòng code.
Cách Spring đơn giản hóa Java
- Sử dụng POJO và dependency injection để giảm độ phức tạp.
- Tích hợp sẵn các thư viện phổ biến như Redis, MongoDB, JPA… mà gần như không cần cấu hình.
- Hỗ trợ nhúng server (Tomcat, Jetty) để chạy ứng dụng độc lập.
Viết API đầu tiên
@RestController
public class ApiController {
@GetMapping("/xin-chao")
public String chao() {
return "Xin chào Spring Boot!";
}
}
Chạy ứng dụng và truy cập http://localhost:8080/xin-chao để xem kết quả.
Tùy chỉnh cổng và banner
Trong file application.properties:
server.port=9090
Tạo file banner.txt trong thư mục resources để thay đổi logo hiển thị khi khởi động.
Cấu trúc dự án cơ bản
- pom.xml: Quản lý phụ thuộc, kế thừa từ
spring-boot-starter-parent. - Main class: Có annotation
@SpringBootApplicationvà phương thứcmain(). - Thư mục resources: Chứa file cấu hình, static files, templates.
Cấu hình với YAML
File application.yml hỗ trợ cấu trúc phân cấp rõ ràng:
app:
ten: "Jan"
tuoi: 25
so-thich:
- lap-trinh
- doc-sach
- am-nhac
Gắn vào class Java bằng @ConfigurationProperties(prefix = "app").
Xác thực dữ liệu với JSR-303
@Component
@ConfigurationProperties(prefix = "nguoi-dung")
@Validated
public class NguoiDung {
@Email(message = "Email không hợp lệ")
private String email;
@Min(value = 18, message = "Phải từ 18 tuổi trở lên")
private int tuoi;
}
Môi trường đa cấu hình
Tạo file application-dev.yml và application-prod.yml, kích hoạt bằng:
spring.profiles.active=dev
Nguyên lý auto-configuration
Spring Boot tự động cấu hình dựa trên các điều kiện tại runtime, kiểm tra qua file META-INF/spring.factories. Bạn có thể ghi đè hoặc mở rộng cấu hình này dễ dàng.
Phát triển Web với Thymeleaf
Thêm phụ thuộc:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
Đặt template trong src/main/resources/templates/ và trả về tên file từ controller.
Tích hợp bảo mật với Spring Security
@EnableWebSecurity
public class CauHinhBaoMat extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests()
.antMatchers("/").permitAll()
.anyRequest().authenticated()
.and().formLogin();
}
}
Kết nối cơ sở dữ liệu
Sử dụng JdbcTemplate hoặc tích hợp MyBatis/Druid để quản lý kết nối và truy vấn.
API documentation với Swagger
Thêm phụ thuộc Swagger UI và cấu hình Docket để tự động sinh tài liệu API, hỗ trợ test trực tiếp trên trình duyệt.