添加依赖
<!-- apache commons io -->
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.6</version>
</dependency>
自定义继承FileAlterationListenerAdaptor
import com.dream.user.restservice.controllers.UserController;
import org.apache.commons.io.monitor.FileAlterationListenerAdaptor;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.File;
/**
* 监听文件变动
*/
public class FileListenerAdaptor extends FileAlterationListenerAdaptor {
private static final Logger logger = LoggerFactory.getLogger(FileListenerAdaptor.class);
/**
* File created Event.
*
* @param file The file created (ignored)
*/
@Override
public void onFileCreate(final File file) {
logger.info("监听{}创建",file.getName());
}
/**
* File changed Event.
*
* @param file The file changed (ignored)
*/
@Override
public void onFileChange(final File file) {
logger.info("监听{}修改",file.getName());
}
/**
* File deleted Event.
*
* @param file The file deleted (ignored)
*/
@Override
public void onFileDelete(final File file) {
logger.info("监听{}删除",file.getName());
}
}
实现spring的监听事件ApplicationListener<ContextRefreshedEvent>
import org.apache.commons.io.monitor.FileAlterationMonitor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationListener;
import org.springframework.context.event.ContextRefreshedEvent;
public class ContextRefreshedListener implements ApplicationListener<ContextRefreshedEvent> {
@Autowired
FileAlterationMonitor monitor;
@Override
public void onApplicationEvent(ContextRefreshedEvent event) {
try {
//开始监听
monitor.start();
} catch (Exception e) {
e.printStackTrace();
}
}
}
FileListenerConfig配置
import org.apache.commons.io.monitor.FileAlterationMonitor;
import org.apache.commons.io.monitor.FileAlterationObserver;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.Resource;
import org.springframework.util.ResourceUtils;
import java.io.File;
@Configuration
public class FileListenerConfig {
@Bean
public ContextRefreshedListener contextRefreshedListener() {
return new ContextRefreshedListener();
}
@Bean
public FileListenerAdaptor fileListener(){return new FileListenerAdaptor();}
@Bean
public FileAlterationMonitor fileMonitor(FileListenerAdaptor fileListener) throws Exception{
FileAlterationMonitor fileMonitor = new FileAlterationMonitor();//默认是10s监听一次
//获取绝对路径
Resource resource = new ClassPathResource("");
String workPath = resource.getFile().getAbsolutePath();
int index = workPath.indexOf("target");
workPath = workPath.substring(0,index-1)+"/src/main/resources/";
//指定观察者监听的目录
File file = ResourceUtils.getFile(workPath);
//实例化观察者
FileAlterationObserver observer = new FileAlterationObserver(file);
observer.addListener(fileListener);
//监视器添加观察者
fileMonitor.addObserver(observer);
return fileMonitor;
}
}