2014-12-30 16 views
5

org.springframework.boot.loader.Launcher theo mặc định sẽ luôn sinh ra một chuỗi nền trong phương thức launch() (https://github.com/spring-projects/spring-boot/blob/master/spring-boot-tools/spring-boot-loader/src/main/java/org/springframework/boot/loader/Launcher.java#L105). Có cách nào dễ dàng để thay đổi điều này để thực thi trong cùng một luồng, vì vậy trình khởi chạy dịch vụ của tôi có thể biết khi nào ứng dụng đã tải đầy đủ và không chỉ đơn giản là thoát với thành công ngay lập tức mỗi lần.Khởi động đồng bộ khởi động đồng bộ

+0

xem xét nó, bạn có thể sử dụng triển khai của riêng bạn, mở rộng lớp jarlauncher/warlauncher và ghi đè phương thức khởi chạy. – MarianP

+0

Có, tôi hiểu rằng tôi có thể ghi đè phương thức đó một cách dễ dàng. Vấn đề là khởi động mùa xuân không dễ dàng cho phép một cách để sử dụng một MainClass khác nhau cho phương thức khởi chạy jar. –

+0

Trình tải lớp ngữ cảnh không thể được thiết lập mà không sinh ra một 'Thread' mới để bạn có thể gặp rắc rối nếu bạn cố gắng thay đổi phương thức này. "Trình khởi chạy dịch vụ" của bạn thực sự đang làm gì? –

Trả lời

0

Tôi tin rằng bạn có thể đăng ký người nghe như thế này:

public static void main(String[] args) { 
    SpringApplication app = new SpringApplication(WsBootClientApplication.class); 

    app.addListeners(new ApplicationListener<ContextStartedEvent>() { 
     @Override 
     public void onApplicationEvent(ContextStartedEvent event) { 
     //do your stuff 
     } 
    }); 
    app.run(args); 
} 

Nếu ContextStartedEvent không phải là sự kiện phù hợp với bạn, bạn có thể thay ContextStartedEvent với ApplicationEvent. Đó là tổng quát hơn và sẽ xử lý tất cả các sự kiện ngữ cảnh của ứng dụng mà ứng dụng của bạn có thể nghe.

Các vấn đề liên quan