1.写工具类:
import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Component;
@Component
@Lazy(false)
public class ApplicationContextRegister implements ApplicationContextAware {
private static ApplicationContext APPLICATION_CONTEXT;
@Override
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
APPLICATION_CONTEXT = applicationContext;
}
public static ApplicationContext getApplicationContext() {
return APPLICATION_CONTEXT;
}
}
2.在websocket中使用:
@OnOpen
public void onOpen(Session session) {
this.session = session;
webSocketSet.add(this); // 加入set中
addOnlineCount(); // 在线数加1
System.out.println("有新连接加入!当前在线人数为" + getOnlineCount());
try {
IOpOrderCustomerDao opOrderCustomerDao = (IOpOrderCustomerDao) ApplicationContextRegister.getApplicationContext().getBean(IOpOrderCustomerDao.class);
List<OpOrderCustomer> lastThree = opOrderCustomerDao.getLastThree(null);
BigDecimal money = opOrderCustomerDao.getTotalOrderCustomerMoney();
OrderSocket orderSocket = new OrderSocket();
orderSocket.setLastOrder(lastThree);
orderSocket.setTotalMoney(money);
ObjectMapper om = new ObjectMapper();
sendMessage(om.writeValueAsString(orderSocket));
} catch (Exception e) {
System.out.println("IO异常");
}
}