我在我的项目中使用spring 3.0.5版。我在我的项目中需要websocket但是这个版本的Spring不支持它。所以我在pom.xml中添加了Websocket依赖,并像这样实现了一个ServerEndpoint
@ServerEndpoint("/echosocket")
public class EchoServer {
private static final Set<Session> sessions = Collections.synchronizedSet(new HashSet<Session>());
@OnOpen
public void onOpen(Session session) throws IOException, EncodeException {
System.out.println("Connected ... " + session.getId());
sessions.add(session);
}
@OnMessage
public void onMessage(Session session, String message) {
for (Session openSession : sessions) {
try {
openSession.getBasicRemote().sendObject(message);
} catch (Exception ex) {
sessions.remove(openSession);
}
}
}
}
现在我需要执行一个服务类方法,所以我自动安装了一个类最终看起来像的服务类
@ServerEndpoint("/echosocket")
public class EchoServer {
@Autowired
private ProductService productService;
private static final Set<Session> sessions = Collections.synchronizedSet(new HashSet<Session>());
@OnOpen
public void onOpen(Session session) throws IOException, EncodeException {
System.out.println("Connected ... " + session.getId());
sessions.add(session);
}
@OnMessage
public void onMessage(Session session, String message) {
for (Session openSession : sessions) {
try {
openSession.getBasicRemote().sendObject(message);
List<ProductBid> list = productService.getAllProduct();
} catch (Exception ex) {
sessions.remove(openSession);
}
}
}
@OnClose
public void onClose(Session session, CloseReason closeReason) {
sessions.remove(session);
System.out.println(String.format("Session %s closed because of %s", session.getId(), closeReason));
}
}
但是在调用List list = productService.getAllProduct()之类的方法时;我发现autowired bean是null并且该方法没有执行。可能的原因是什么?为什么bean没有正确自动装配?什么可能是解决方案?我不知道这是正确的问题,但我确实需要帮助。请帮助我。