Bean未正确自动装配

时间:2016-04-08 05:46:22

标签: java spring maven websocket

我在我的项目中使用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没有正确自动装配?什么可能是解决方案?我不知道这是正确的问题,但我确实需要帮助。请帮助我。

0 个答案:

没有答案