package org.jeecg.modules.dnc.listener;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.boot.ApplicationArguments;
|
import org.springframework.boot.ApplicationRunner;
|
import org.springframework.boot.web.servlet.ServletContextInitializer;
|
import org.springframework.context.annotation.Bean;
|
import org.springframework.context.annotation.Configuration;
|
|
@Configuration
|
public class FileMonitorBootstrap implements ApplicationRunner {
|
|
private MultiPathMonitor monitor;
|
|
@Autowired
|
private FileMonitorConfig config;
|
|
@Autowired
|
private FileListener listener;
|
|
@Bean
|
public MultiPathMonitor fileMonitor() {
|
return new MultiPathMonitor(
|
config.getPaths(),
|
config.getInterval(),
|
listener
|
);
|
}
|
|
@Override
|
public void run(ApplicationArguments args) throws Exception {
|
monitor = fileMonitor();
|
monitor.start();
|
}
|
|
// 在应用关闭时停止监控
|
@Bean
|
public ServletContextInitializer stopMonitorOnShutdown() {
|
return servletContext -> {
|
servletContext.addListener(new javax.servlet.ServletContextListener() {
|
@Override
|
public void contextDestroyed(javax.servlet.ServletContextEvent sce) {
|
try {
|
if (monitor != null) {
|
monitor.stop();
|
}
|
} catch (Exception e) {
|
System.err.println("停止监控时出错: " + e.getMessage());
|
}
|
}
|
});
|
};
|
}
|
}
|