02 - Spring Boot Auto Configuration

03/03/2025 - 3 phút

Follow  on Google News

Trong bài viết này, chúng ta sẽ tìm hiểu về Spring Boot Auto Configuration, một tính năng mạnh mẽ giúp tự động cấu hình ứng dụng Spring Boot dựa trên thư viện có trong classpath.

1. Giới Thiệu

Spring Boot mang đến tính năng Auto Configuration giúp tự động cấu hình các thành phần cần thiết trong ứng dụng dựa trên các thư viện có trong classpath. Điều này giúp bạn giảm bớt công sức cấu hình thủ công, tiết kiệm thời gian và tăng tốc quá trình phát triển.

Trước đây, khi sử dụng Spring Framework thuần túy, bạn cần khai báo nhiều cấu hình trong file XML hoặc thông qua Java Configuration. Với Spring Boot Auto Configuration, framework này sẽ tự động xác định và cấu hình các thành phần dựa trên các thư viện có trong ứng dụng.

2. Spring Boot Auto Configuration Hoạt Động Như Thế Nào?

Spring Boot dựa trên hai yếu tố để quyết định việc tự động cấu hình:

  1. Các thư viện có trong classpath – Nếu một thư viện tồn tại trong classpath, Spring Boot sẽ kích hoạt cấu hình mặc định tương ứng.
  2. Cấu hình do lập trình viên cung cấp – Nếu bạn tự định nghĩa một số cấu hình, Spring Boot sẽ không ghi đè chúng.

Spring Boot thực hiện Auto Configuration thông qua spring-boot-autoconfigure.jar, trong đó có hàng loạt các class chứa cấu hình mặc định cho từng loại ứng dụng khác nhau.

3. Ví Dụ Về Spring Boot Auto Configuration

3.1. Cấu Hình Mặc Định Khi Sử Dụng spring-boot-starter-web

Khi bạn thêm spring-boot-starter-web vào pom.xml, Spring Boot sẽ tự động cấu hình:

  • Máy chủ nhúng Tomcat để chạy ứng dụng.
  • DispatcherServlet để xử lý các request HTTP.
  • Jackson để chuyển đổi JSON.

Ví dụ:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>

Sau khi thêm dependency này, bạn chỉ cần viết một Controller đơn giản:

@RestController
@RequestMapping("/api")
public class HelloController {
    @GetMapping("/hello")
    public String sayHello() {
        return "Hello, Spring Boot Auto Configuration!";
    }
}

Bạn không cần phải khai báo DispatcherServlet, vì Spring Boot đã tự động cấu hình nó cho bạn.

3.2. Cấu Hình Mặc Định Khi Sử Dụng spring-boot-starter-data-jpa

Nếu bạn thêm spring-boot-starter-data-jpa, Spring Boot sẽ tự động:

  • Cấu hình Datasource.
  • Cấu hình EntityManagerFactory.
  • Cấu hình TransactionManager.

Ví dụ:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>

Sau đó, chỉ cần khai báo application.properties:

spring.datasource.url=jdbc:mysql://localhost:3306/mydb
spring.datasource.username=root
spring.datasource.password=secret
spring.jpa.hibernate.ddl-auto=update

Spring Boot sẽ tự động cấu hình kết nối đến MySQL mà không cần khai báo bất kỳ cấu hình nào trong Java.

4. Kiểm Tra Auto Configuration Đang Hoạt Động

Bạn có thể kiểm tra các cấu hình tự động đang được kích hoạt trong Spring Boot bằng cách:

4.1. Bật Logging Debug

Thêm dòng sau vào application.properties:

logging.level.org.springframework.boot.autoconfigure=DEBUG

Khi chạy ứng dụng, bạn sẽ thấy danh sách các cấu hình được kích hoạt hoặc bị vô hiệu hóa.

4.2. Kiểm Tra Bằng /actuator/conditions

Nếu bạn đang sử dụng Spring Boot Actuator, bạn có thể kiểm tra auto configuration qua endpoint:

http://localhost:8080/actuator/conditions

Endpoint này hiển thị danh sách các cấu hình tự động được kích hoạt hoặc bị loại bỏ.

5. Tắt Một Auto Configuration Cụ Thể

Nếu bạn muốn tắt một số auto configuration cụ thể, bạn có thể sử dụng annotation:

@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})
public class MyApp {
    public static void main(String[] args) {
        SpringApplication.run(MyApp.class, args);
    }
}

Cách này giúp vô hiệu hóa DataSourceAutoConfiguration, nếu bạn muốn tự cấu hình datasource thủ công.

6. Kết Luận

Spring Boot Auto Configuration là một tính năng mạnh mẽ giúp bạn giảm thiểu công sức cấu hình thủ công bằng cách tự động phát hiện và thiết lập các thành phần cần thiết dựa trên thư viện có sẵn trong ứng dụng.

Tóm tắt:

  • Spring Boot tự động cấu hình dựa trên classpath.
  • Bạn có thể kiểm tra cấu hình tự động thông qua logging hoặc Actuator.
  • Nếu cần, bạn có thể vô hiệu hóa một số auto configuration.

👉 Trong bài viết tiếp theo, chúng ta sẽ tìm hiểu chi tiết về Spring Boot Actuator, một công cụ mạnh mẽ giúp giám sát và quản lý ứng dụng Spring Boot!