Java Spring boot@ClientEndpoint can';t@Autowired我的服务
我尝试使用@Autowired在@ClientEndpoint中使用我的服务 但是有一个java.lang.NullPointerException 这是我的密码 P2PService.javaJava Spring boot@ClientEndpoint can';t@Autowired我的服务,java,spring-boot,spring-websocket,Java,Spring Boot,Spring Websocket,我尝试使用@Autowired在@ClientEndpoint中使用我的服务 但是有一个java.lang.NullPointerException 这是我的密码 P2PService.java 公共接口p2p服务{ void send(会话,字符串msg); } P2PServiceImpl.java @服务 公共类P2PServiceImpl实现P2PService{ @凌驾 公共无效发送(会话,字符串消息){ session.getAsyncRemote().sendText(msg);
公共接口p2p服务{
void send(会话,字符串msg);
}
P2PServiceImpl.java
@服务
公共类P2PServiceImpl实现P2PService{
@凌驾
公共无效发送(会话,字符串消息){
session.getAsyncRemote().sendText(msg);
}
}
首先我使用这个代码
@组件
@客户点
公共类p2p客户端{
非公开会议;
公共服务器(字符串url){
试一试{
WebSocketContainer=ContainerProvider.getWebSocketContainer();
URI=URI.create(url);
this.session=container.connectToServer(P2pClient.class,uri);
}捕获(例外e){
e、 printStackTrace();
}
}
@自动连线
专用p2p服务p2p服务;
@奥诺彭
公共开放(会议){
this.session=会话;
System.out.println(本文件);
System.out.println(p2p客户端p2p服务);
}
在找到参考后,我用这个
私有静态p2p服务p2p服务;
@自动连线
公共静态无效设置P2PService(P2PService P2PService){
P2pClient.p2PService=p2PService;
}
控制台输出为
com.p2ptest.P2pClient@71e7a66b
null
我只是用这个代码来启动这个项目
P2pClient p2pClient = new P2pClient();
p2pClient.connectServer(url);
例外情况
java.lang.NullPointerException
at com.p2ptest.P2pClient.onOpen(P2pClient.java:62)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.apache.tomcat.websocket.pojo.PojoEndpointBase.doOnOpen(PojoEndpointBase.java:65)
at org.apache.tomcat.websocket.pojo.PojoEndpointClient.onOpen(PojoEndpointClient.java:45)
at org.apache.tomcat.websocket.WsWebSocketContainer.connectToServerRecursive(WsWebSocketContainer.java:509)
at org.apache.tomcat.websocket.WsWebSocketContainer.connectToServer(WsWebSocketContainer.java:197)
at org.apache.tomcat.websocket.WsWebSocketContainer.connectToServer(WsWebSocketContainer.java:154)
at org.apache.tomcat.websocket.WsWebSocketContainer.connectToServer(WsWebSocketContainer.java:171)
at com.p2ptest.P2pClient.connectServer(P2pClient.java:38)
at com.Hello.main(Hello.java:22)
我不知道我能做什么当包含
@Autowired
注释的类使用new
实例化时,自动连接无法工作,即P2pClient P2pClient=new P2pClient();
是问题所在。有必要从应用程序上下文中获取p2p客户端。这个问题已经有了答案: