Tôi có một ứng dụng Spring Boot. Tôi đã thêm rất nhiều phụ thuộc (thật không may, có vẻ như tôi cần tất cả chúng) và thời gian khởi động tăng lên khá nhiều. Chỉ làm một SpringApplication.run(source, args)
mất 10 giây.
Mặc dù điều đó có thể không nhiều so với những gì đã được "sử dụng", nhưng tôi không hài lòng vì nó mất nhiều như vậy, chủ yếu là vì nó phá vỡ quy trình phát triển. Bản thân ứng dụng tại thời điểm này khá nhỏ, vì vậy tôi cho rằng phần lớn thời gian liên quan đến các phần phụ thuộc được thêm vào, không phải bản thân các lớp ứng dụng.
Tôi cho rằng sự cố là do quét classpath, nhưng tôi không chắc chắn về cách:
- Xác nhận đó là sự cố (tức là cách "gỡ lỗi" Spring Boot)
- Nếu thực sự là nguyên nhân thì làm cách nào để hạn chế, để bệnh nhanh khỏi? Ví dụ: nếu tôi biết rằng một số gói hoặc gói phụ thuộc không chứa bất kỳ thứ gì mà Spring nên quét, có cách nào để hạn chế điều đó không?
Tôi giả định rằng việc nâng cao Spring để khởi tạo bean song song trong quá trình khởi động sẽ tăng tốc mọi thứ, nhưng yêu cầu nâng cao đó đã được mở từ năm 2011 mà không có bất kỳ tiến triển nào. Tôi thấy một số nỗ lực khác trong Spring Boot, chẳng hạn như Điều tra cải tiến tốc độ JarScanning của Tomcat , nhưng đó là Tomcat cụ thể và đã bị bỏ qua.
Bài viết này:
mặc dù nhằm mục đích kiểm tra tích hợp, đề xuất sử dụng lazy-init=true
, tuy nhiên tôi không biết cách áp dụng điều này cho tất cả các bean trong Spring Boot bằng cách sử dụng cấu hình Java - bất kỳ con trỏ nào ở đây?
Mọi đề xuất (khác) sẽ được hoan nghênh.
@ComponentScan
những gói đó cũng được quét. Một điều nữa là đảm bảo rằng bạn chưa bật tính năng ghi nhật ký gỡ lỗi hoặc theo dõi vì ghi nhật ký nói chung rất chậm, rất chậm.