SpringBoot关闭服务后,对数据进行持久化操作
提示:以下是本篇文章正文内容,下面案例可供参考
1、放入需要持久化的数据
@Slf4j
@RestController
@Api(tags = "存放需要持久化的数据")
@RequestMapping("/")
public class TestController {
@Autowired
private TestPersistence testPersistence;
private ConcurrentMap<String,String> concurrentMap = new ConcurrentHashMap();
@NoLogin
@PostMapping(value = "/test")
public void test() {
concurrentMap.put("test","123456");
Data data = new Data();
data.setConcurrentMap(concurrentMap);
testPersistence.Persistence(data);
}
public interface TestPersistence{
void Persistence(Data data);
}
@lombok.Data
public static class Data{
private ConcurrentMap<String,String> concurrentMap;
}
}
2、调用自定义的销毁方法
@Slf4j
@Component
public class TestImplDisposableBean implements DisposableBean, ExitCodeGenerator, TestController.TestPersistence {
private ConcurrentMap<String, String> concurrentMap = new ConcurrentHashMap<>();
@Override
public void destroy() throws Exception {
log.info("程序关闭,可以保存需要序列化的数据:{}",concurrentMap);
log.info("拿到数据后,可以保存在本地磁盘,下次项目启动的时候获取数据,然后执行自己需要的逻辑即可!");
}
@Override
public void Persistence(TestController.Data data) {
concurrentMap = data.getConcurrentMap();
}
@Override
public int getExitCode() {
return 5;
}
}
3、关闭程序可见控制台输入需要持久化的数据