監聽文件改變 fileAlterationMonitor

監聽文件改動

Apacha common.io2.0提供了監聽文件變化的功能。

功能由三個組件組成。

  1. 監聽器 FileAlterationListener

    用於實現文件改變時觸發的行爲。

  2. 觀察者 FileAlterationObserver

    用於觀察文件的改變,通知註冊的監聽器執行相應的事件。

  3. 監視器 FileAlterationMonitor

    通過一線程,每間隔一段時間調用一次註冊的觀察者檢查文件。

maven依賴

<dependency>
            <groupId>commons-io</groupId>
            <artifactId>commons-io</artifactId>
            <version>2.4</version>
        </dependency>

FileAlterationListener

通過繼承FileAlterationListenerAdaptor,覆蓋相應事件方法。這裏只重寫了文件改變。還有其他事件可以查看FileAlterationListener接口看下。

public class FileAlterationReload extends FileAlterationListenerAdaptor {

    @Override
    public void onFileChange(File file) {
        System.out.println("文件改變");
    }
}

程序實現

public class Demo {

     public static void main(String[] args) throws Exception {
         
         
         //檢查classpath下properties文件夾下的properties文件。
         FileAlterationObserver fileAlterationObserver = new FileAlterationObserver(Demo.class.getClassLoader().getResource("properties").getPath(),new PropertiesFileFilter());
         
         FileAlterationListener fileAlterationListener =new FileAlterationReload();
         //註冊監聽器
         fileAlterationObserver.addListener(fileAlterationListener);
         FileAlterationMonitor fileAlterationMonitor = new FileAlterationMonitor();
         //註冊觀察者
         fileAlterationMonitor.addObserver(fileAlterationObserver);
         //啓動監聽
         fileAlterationMonitor.start();
         //讓主線程別這麼快結束。
         Thread.sleep(1000000);

     }
}

修改properties文件夾下的properties文件時,會輸出 文件改變。

應用場景

可以用於實現配置文件的熱部署 

 

練習寫了一個例子

https://github.com/wujiazhen2/DynamicConfigRefresh

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章