第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Spring Boot - 如何為非 GUI 應(yīng)用程序注冊關(guān)閉掛鉤

Spring Boot - 如何為非 GUI 應(yīng)用程序注冊關(guān)閉掛鉤

慕勒3428872 2021-11-24 20:14:47
我正在開發(fā)一個應(yīng)用程序,它基本上是一個將使用命令行運行的服務(wù)。我確實在config文件中有一個選項可以顯示GUI. 如果用戶選擇讓它顯示窗口,那么我可以shutdown()使用WindowClosing來自 Swing的事件或關(guān)閉按鈕調(diào)用我的方法。但是,如果用戶選擇 no-GUI 選項,我不確定如何確保在命令提示符下按 Control-C 時調(diào)用此方法。我的shutdown()方法更新數(shù)據(jù)庫中的一些重要數(shù)據(jù)并停止線程,所以我需要它運行。我做了一些研究并嘗試過這樣的事情:public static void main(String args[]) {    //Look and Feel Initialization    try     {        for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels())         {            if ("Nimbus".equals(info.getName()))             {                javax.swing.UIManager.setLookAndFeel(info.getClassName());                break;            }        }    }     catch (ClassNotFoundException | IllegalAccessException | InstantiationException | UnsupportedLookAndFeelException ex)     {        logger.error("Error initializing look and feel : " + ex.getMessage());    }     //Application Initialization    SpringApplication application = new SpringApplication(MDHIS_Service.class);    application.addListeners((ApplicationListener<ContextClosedEvent>) (ContextClosedEvent e) ->     {        shutdown();    });    application.run(args);}問題是我的shutdown()方法遠非靜態(tài)。我不知道如何將它連接到 Spring Boot 上下文中,讓它在停止之前運行這個方法。我嘗試了@PreDestroy注釋,但它沒有按預(yù)期運行該方法。任何幫助,將不勝感激。
查看完整描述

2 回答

?
慕村9548890

TA貢獻1884條經(jīng)驗 獲得超4個贊

經(jīng)過更多研究,我最終實現(xiàn)了 SmartLifecycle 接口。我的getPhase()方法返回Integer.MAX_VALUE;,這意味著首先銷毀 bean。然后可以使用 stop 方法調(diào)用清理代碼并確保任何日志記錄/其他數(shù)據(jù)庫訪問 bean 仍然有效。


查看完整回答
反對 回復(fù) 2021-11-24
?
慕姐4208626

TA貢獻1852條經(jīng)驗 獲得超7個贊

請參閱運行時 API以注冊關(guān)閉掛鉤 - 基本上使用 Thread 在 JVM 終止時調(diào)用方法(通?;蛲ㄟ^ CTRL + C 等中斷)。


在這種情況下,它看起來像是shutdown()定義了的類中的靜態(tài)方法main(),所以是這樣的:


public static void main(String args[]) {

    ...

    if (using command line) {

        Runtime.getRuntime().addShutdownHook(new Thread( () -> shutdown() ));

    }

}

關(guān)于@PreDestroy 的使用,這個類似的問題也可能有所幫助。


查看完整回答
反對 回復(fù) 2021-11-24
  • 2 回答
  • 0 關(guān)注
  • 155 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號