前言
今天事情很多,没有学习多少,学了几个新的知识点。
今日所学内容
1.Springtask:按照约定的时间自动执行代码
用cron表达式去匹配时间
如果不会写cron表达式可以在在线平台生成
https://cron.qqe2.com/
springtask执行步骤
@Scheduled(cron = "0 * * * * ?")
public void processTimeoutOrder(){
LocalDateTime time = LocalDateTime.now().plusMinutes(-15);
List<Orders> list = orderMapper.getByStatusAndOrderTimeOutLT(Orders.PENDING_PAYMENT,time);
if(list != null && list.size() > 0){
for (Orders orders : list) {
orders.setStatus(Orders.CANCELLED);
orders.setCancelReason("超时订单");
orders.setCancelTime(LocalDateTime.now());
orderMapper.update(orders);
}
}
}
2.WebSocket
1. WebSocketConfiguration
配置类
ServerEndpointExporter
:自动扫描带有 @ServerEndpoint
注解的类,将其注册为 WebSocket 端点
@Configuration
public class WebSocketConfiguration {
@Bean
public ServerEndpointExporter serverEndpointExporter() {
return new ServerEndpointExporter();
}
}
2. WebSocketServer
WebSocket 端点类
@Component
@ServerEndpoint("/ws/{sid}")
public class WebSocketServer {
private static Map<String, Session> sessionMap = new HashMap();
// 连接建立、消息接收、连接关闭的处理方法
// ...
}
3.会话管理
-
作用:存储所有活跃的客户端会话
-
Key:客户端标识 (sid)
-
Value:WebSocket 会话对象 (Session)
-
特点:静态变量,所有实例共享(因为是单端点)
private static Map<String, Session> sessionMap = new HashMap();
总结
今天学习的时间很少,但还是学了几个新的知识,也算是有收获的一天