2016-02-29 38 views
14

Theo tôi, các dự án SpringBoot mất nhiều thời gian để tải. Điều này có thể xảy ra vì SpringBoot đang cấu hình các thành phần cho bạn, một số trong đó bạn thậm chí không cần. Điều rõ ràng nhất cần làm là loại bỏ những phụ thuộc không cần thiết khỏi đường dẫn lớp học của bạn. Tuy nhiên, điều đó là không đủ.Giảm thiểu thời gian khởi động khởi động mùa xuân

Có cách nào để tìm hiểu những mô-đun SpringBoot được cấu hình để bạn có thể chọn ra những gì bạn không cần và vô hiệu hóa chúng?

Có điều gì khác người ta có thể làm để tăng tốc độ thời gian khởi động cho các ứng dụng SpringBoot nói chung?

Trả lời

25

Tôi có thể nói với bạn rằng tôi chạy một ứng dụng lớn (800.000 dòng mã), sử dụng các dịch vụ web an toàn thông qua Spring MVC, JMS, giao dịch Atomikos, hỗ trợ Hibernate, JMX và Tomcat được nhúng. Với tất cả những điều đó, ứng dụng sẽ khởi động trên máy tính để bàn cục bộ của tôi sau khoảng 19 giây.

Xuân Boot cố gắng hết sức không để cấu hình các module bạn không sử dụng. Tuy nhiên, nó rất dễ dàng để giới thiệu phụ thuộc bổ sung và cấu hình mà bạn không có ý định.

Hãy nhớ rằng mùa xuân Boot theo ước về cấu hình mô hình và bằng cách đơn giản là đặt một thư viện trong đường dẫn lớp học của bạn có thể gây ra mùa xuân Boot để cố gắng để cấu hình một module để sử dụng thư viện. Ngoài ra, bằng cách làm một cái gì đó đơn giản như chú thích lớp của bạn với @RestController sẽ kích hoạt Spring Boot để tự động cấu hình toàn bộ ngăn xếp Spring MVC.

Bạn có thể xem điều gì đang diễn ra trong phần vỏ và bật ghi nhật ký gỡ lỗi đơn giản như chỉ định --debug khi khởi động ứng dụng từ dòng lệnh. Bạn cũng có thể chỉ định debug = true trong application.properties của mình.

Bên cạnh đó, bạn có thể thiết lập mức độ khai thác gỗ trong application.properties đơn giản như:

Nếu bạn phát hiện một mô-đun tự động cấu hình bạn không muốn, nó có thể được vô hiệu hóa. Các tài liệu này có thể được tìm thấy ở đây: http://docs.spring.io/spring-boot/docs/current-SNAPSHOT/reference/htmlsingle/#using-boot-disabling-specific-auto-configuration

Một ví dụ sẽ trông giống như:

@Configuration 
@EnableAutoConfiguration(exclude={DataSourceAutoConfiguration.class}) 
public class MyConfiguration { 
} 
Các vấn đề liên quan