HSF302 - Phần 3: Spring Boot và cấu hình tự động
Cổng chạy, chuỗi kết nối cơ sở dữ liệu hay mức ghi log của một dự án Spring Boot đều đặt trong application.properties hoặc application.yml, đổi ở đó không cần sửa mã. Phụ thuộc được khai báo theo cụm: thêm spring-boot-starter-web vào dự án là có đủ Spring MVC, thư viện chuyển JSON và một máy chủ Tomcat nhúng, nên ứng dụng chạy bằng một lệnh java -jar. Lớp main mang @SpringBootApplication, một annotation gộp @SpringBootConfiguration (một dạng @Configuration), @ComponentScan và @EnableAutoConfiguration. Trọng tâm là cấu hình tự động: Spring Boot xem những lớp nào có trên classpath rồi tạo sẵn DataSource, EntityManagerFactory hay DispatcherServlet, và lùi lại ngay khi người viết tự khai báo bean cùng loại. Hạ tầng dựng sẵn ấy cũng là nền cho repository ở Phần 4.
Bắt đầu bằng Chế độ học nếu bạn muốn đáp án và giải thích hiện ngay sau mỗi câu — không bấm giờ, dừng lúc nào cũng được. Chọn Thi thử khi muốn biết mình đang ở đâu: có bấm giờ, chấm điểm ở cuối, và giải thích chỉ mở sau khi nộp.
Luyện tập theo chủ đề này
Câu hỏi của chủ đề
public class AppStarter {
public static void main(String[] args) {
SpringApplication.run(AppStarter.class, args);
}
}Đáp án đúng: "Autoconfiguration → configure beans from classpath & properties; Actuator → health/metrics endpoints; DevTools → auto-restart & LiveReload". Auto-configuration xem thư viện có trên classpath và các thuộc tính trong application.properties để tự tạo bean phù hợp, ví dụ thấy Hibernate và DataSource thì dựng EntityManagerFactory; Actuator mở các endpoint giám sát như health, metrics, info; DevTools tự khởi động lại khi mã thay đổi và kích hoạt LiveReload cho trình duyệt, nên cả ba cặp đều khớp. "SpringApplication → compile JPQL; Actuator → serve JSP; DevTools → manage database migrations" sai cả ba: SpringApplication khởi động ứng dụng, JPQL do JPA provider dịch, Actuator không phục vụ JSP, còn migration là việc của Flyway hay Liquibase. "CLI → container orchestration; Actuator → live code reload; Autoconfiguration → command scheduling" sai vì Spring Boot CLI dùng để chạy nhanh script và tạo dự án chứ không điều phối container, nạp lại mã là việc của DevTools, còn lên lịch tác vụ dùng @Scheduled. "Starter POMs → replace the need for Maven/Gradle; Embedded servers → remove HTTP support" sai vì starter là gói phụ thuộc vẫn cần Maven hoặc Gradle để quản lý, còn máy chủ nhúng như Tomcat chính là thứ cung cấp HTTP.
Đề có câu hỏi của chủ đề này
5 đề chứa ít nhất một câu thuộc chủ đề — mở đề để làm cả bộ, không chỉ từng câu.