业务要求 系统更新,关闭SpringBoot项目时将所有未完成订单强制结束 并更新结束时间
项目关闭时运行
import javax.annotation.PreDestroy;
import org.springframework.stereotype.Component;
@Component
public class EndGlobalKeyboard {
@PreDestroy
public void destory() throws Exception {
//你的代码
}
}
被@PreDestroy修饰的方法会在服务器卸载Servlet的时候运行,并且只会被服务器调用一次,类似于Servlet的destroy()方法。被@PreDestroy修饰的方法会在destroy()方法之后运行,在Servlet被彻底卸载之前。
顺便测试一下项目启动时运行
import org.springframework.boot.CommandLineRunner;
import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Component;
@Component
@Order(value = 1)
public class StartGlobalKeyboard implements CommandLineRunner{
@Override
public void run(String... args) throws Exception {
//你的要执行的代码
}
}
@Component 把普通pojo实例化到spring容器中,泛指各种组件,就是说当我们的类不属于各种归类的时候(不属于@Controller、@Services等的时候),我们就可以使用@Component来标注这个类。
@Order(value = 1)定义执行顺序,告诉项目加载完优先执行
访问接口验证
http://localhost:8080/yjc-portal/test1/shutdown