Spring 自动接线不工作

Spring 自动接线不工作,spring,spring-boot,Spring,Spring Boot,我的@Autowired(socket_-mesajService)在SocketHandler.class中不起作用我得到了一个NullPointerException,但是@Autowired(socket_-mesajService)正在为其他类工作 @Configuration @EnableWebSocket public class WebSocketConfig implements WebSocketConfigurer { public void registerWebSock

我的
@Autowired(socket_-mesajService)
SocketHandler.class
中不起作用我得到了一个
NullPointerException
,但是
@Autowired(socket_-mesajService)
正在为其他类工作

@Configuration
@EnableWebSocket
public class WebSocketConfig implements WebSocketConfigurer {
public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {
    registry.addHandler(new SocketHandler(), "/name");

 }
@Configuration
@EnableAutoConfiguration
@SpringBootApplication   (scanBasePackages={"com.polipool.*"})
@EntityScan( basePackages = {"com.polipool.model"})
public class ApplicationRun extends SpringBootServletInitializer {

  public static void main(String[] args) throws Exception {
        SpringApplication.run(ApplicationRun.class, args);
    }

  @Bean
    public ServletRegistrationBean servletRegistrationBean() {
        FacesServlet servlet = new FacesServlet();
        return new ServletRegistrationBean(servlet, "*.xhtml");
    }

  @Override
  protected SpringApplicationBuilder configure(SpringApplicationBuilder 
  builder) {
      return builder.sources(ApplicationRun.class);
   }

} 
@Service
public class Socket_mesajServiceImpl implements Socket_mesajService {
@Autowired
private Socket_mesajDao socket_mesajDao;
@Override
public List<Socket_mesaj_template> Socket_mesaj_templateAll(String 
messageid) {
    return socket_mesajDao.Socket_mesaj_templateAll(messageid);
}

}
这是我的SocketHandler类,并在此类中调用socket_mesajService

@Component
public class SocketHandler extends TextWebSocketHandler {
    @Autowired
    private Socket_mesajService socket_mesajService;

    List<Socket_session_model> sessions = new ArrayList<>();

    @Override
    public void handleTextMessage(WebSocketSession session, TextMessage message) throws InterruptedException, IOException {
        for(Socket_session_model socket_session__model : sessions) {
            socket_mesajService.Socket_mesaj_templateAll(socket_session__model.getUserid());
        }
    }
}
@Configuration
@EnableWebSocket
public class WebSocketConfig implements WebSocketConfigurer {
public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {
    registry.addHandler(new SocketHandler(), "/name");

 }
@Configuration
@EnableAutoConfiguration
@SpringBootApplication   (scanBasePackages={"com.polipool.*"})
@EntityScan( basePackages = {"com.polipool.model"})
public class ApplicationRun extends SpringBootServletInitializer {

  public static void main(String[] args) throws Exception {
        SpringApplication.run(ApplicationRun.class, args);
    }

  @Bean
    public ServletRegistrationBean servletRegistrationBean() {
        FacesServlet servlet = new FacesServlet();
        return new ServletRegistrationBean(servlet, "*.xhtml");
    }

  @Override
  protected SpringApplicationBuilder configure(SpringApplicationBuilder 
  builder) {
      return builder.sources(ApplicationRun.class);
   }

} 
@Service
public class Socket_mesajServiceImpl implements Socket_mesajService {
@Autowired
private Socket_mesajDao socket_mesajDao;
@Override
public List<Socket_mesaj_template> Socket_mesaj_templateAll(String 
messageid) {
    return socket_mesajDao.Socket_mesaj_templateAll(messageid);
}

}
这是我的ApplicationRun类////////

@Configuration
@EnableWebSocket
public class WebSocketConfig implements WebSocketConfigurer {
public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {
    registry.addHandler(new SocketHandler(), "/name");

 }
@Configuration
@EnableAutoConfiguration
@SpringBootApplication   (scanBasePackages={"com.polipool.*"})
@EntityScan( basePackages = {"com.polipool.model"})
public class ApplicationRun extends SpringBootServletInitializer {

  public static void main(String[] args) throws Exception {
        SpringApplication.run(ApplicationRun.class, args);
    }

  @Bean
    public ServletRegistrationBean servletRegistrationBean() {
        FacesServlet servlet = new FacesServlet();
        return new ServletRegistrationBean(servlet, "*.xhtml");
    }

  @Override
  protected SpringApplicationBuilder configure(SpringApplicationBuilder 
  builder) {
      return builder.sources(ApplicationRun.class);
   }

} 
@Service
public class Socket_mesajServiceImpl implements Socket_mesajService {
@Autowired
private Socket_mesajDao socket_mesajDao;
@Override
public List<Socket_mesaj_template> Socket_mesaj_templateAll(String 
messageid) {
    return socket_mesajDao.Socket_mesaj_templateAll(messageid);
}

}
Socket_mesajServiceImpl类

@Configuration
@EnableWebSocket
public class WebSocketConfig implements WebSocketConfigurer {
public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {
    registry.addHandler(new SocketHandler(), "/name");

 }
@Configuration
@EnableAutoConfiguration
@SpringBootApplication   (scanBasePackages={"com.polipool.*"})
@EntityScan( basePackages = {"com.polipool.model"})
public class ApplicationRun extends SpringBootServletInitializer {

  public static void main(String[] args) throws Exception {
        SpringApplication.run(ApplicationRun.class, args);
    }

  @Bean
    public ServletRegistrationBean servletRegistrationBean() {
        FacesServlet servlet = new FacesServlet();
        return new ServletRegistrationBean(servlet, "*.xhtml");
    }

  @Override
  protected SpringApplicationBuilder configure(SpringApplicationBuilder 
  builder) {
      return builder.sources(ApplicationRun.class);
   }

} 
@Service
public class Socket_mesajServiceImpl implements Socket_mesajService {
@Autowired
private Socket_mesajDao socket_mesajDao;
@Override
public List<Socket_mesaj_template> Socket_mesaj_templateAll(String 
messageid) {
    return socket_mesajDao.Socket_mesaj_templateAll(messageid);
}

}
@服务
公共类Socket_mesajServiceImpl实现Socket_mesajService{
@自动连线
专用插座_mesajDao插座_mesajDao;
@凌驾
公共列表套接字_mesaj_templateAll(字符串
消息ID){
返回socket_mesajDao.socket_mesaj_templateAll(messageid);
}
}
套接字服务

@Configuration
@EnableWebSocket
public class WebSocketConfig implements WebSocketConfigurer {
public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {
    registry.addHandler(new SocketHandler(), "/name");

 }
@Configuration
@EnableAutoConfiguration
@SpringBootApplication   (scanBasePackages={"com.polipool.*"})
@EntityScan( basePackages = {"com.polipool.model"})
public class ApplicationRun extends SpringBootServletInitializer {

  public static void main(String[] args) throws Exception {
        SpringApplication.run(ApplicationRun.class, args);
    }

  @Bean
    public ServletRegistrationBean servletRegistrationBean() {
        FacesServlet servlet = new FacesServlet();
        return new ServletRegistrationBean(servlet, "*.xhtml");
    }

  @Override
  protected SpringApplicationBuilder configure(SpringApplicationBuilder 
  builder) {
      return builder.sources(ApplicationRun.class);
   }

} 
@Service
public class Socket_mesajServiceImpl implements Socket_mesajService {
@Autowired
private Socket_mesajDao socket_mesajDao;
@Override
public List<Socket_mesaj_template> Socket_mesaj_templateAll(String 
messageid) {
    return socket_mesajDao.Socket_mesaj_templateAll(messageid);
}

}
public interface Socket_mesajService {
public void Socket_mesaj_tamplateadd (Socket_mesaj_template mesaj);
public void Socket_mesaj_templateupdate (Socket_mesaj_template user);
public void Socket_mesaj_templatedelete (String messageid);
public List<Socket_mesaj_template> Socket_mesaj_templateAll (String userid);
}
public interface Socket_mesajService{
公共空白插座台面添加(插座台面模板台面);
公共无效套接字模板更新(套接字模板用户);
public void Socket_mesaj_templatedelete(字符串messageid);
公共列表Socket_mesaj_templateAll(字符串userid);
}

问题在于这一行:

@Configuration
@EnableWebSocket
public class WebSocketConfig implements WebSocketConfigurer {
public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {
    registry.addHandler(new SocketHandler(), "/name");

 }
@Configuration
@EnableAutoConfiguration
@SpringBootApplication   (scanBasePackages={"com.polipool.*"})
@EntityScan( basePackages = {"com.polipool.model"})
public class ApplicationRun extends SpringBootServletInitializer {

  public static void main(String[] args) throws Exception {
        SpringApplication.run(ApplicationRun.class, args);
    }

  @Bean
    public ServletRegistrationBean servletRegistrationBean() {
        FacesServlet servlet = new FacesServlet();
        return new ServletRegistrationBean(servlet, "*.xhtml");
    }

  @Override
  protected SpringApplicationBuilder configure(SpringApplicationBuilder 
  builder) {
      return builder.sources(ApplicationRun.class);
   }

} 
@Service
public class Socket_mesajServiceImpl implements Socket_mesajService {
@Autowired
private Socket_mesajDao socket_mesajDao;
@Override
public List<Socket_mesaj_template> Socket_mesaj_templateAll(String 
messageid) {
    return socket_mesajDao.Socket_mesaj_templateAll(messageid);
}

}
registry.addHandler(new SocketHandler(), "/name");
您自己创建了一个
SocketHandler
的实例,因此其中的属性将为
null

@Configuration
@EnableWebSocket
public class WebSocketConfig implements WebSocketConfigurer {
public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {
    registry.addHandler(new SocketHandler(), "/name");

 }
@Configuration
@EnableAutoConfiguration
@SpringBootApplication   (scanBasePackages={"com.polipool.*"})
@EntityScan( basePackages = {"com.polipool.model"})
public class ApplicationRun extends SpringBootServletInitializer {

  public static void main(String[] args) throws Exception {
        SpringApplication.run(ApplicationRun.class, args);
    }

  @Bean
    public ServletRegistrationBean servletRegistrationBean() {
        FacesServlet servlet = new FacesServlet();
        return new ServletRegistrationBean(servlet, "*.xhtml");
    }

  @Override
  protected SpringApplicationBuilder configure(SpringApplicationBuilder 
  builder) {
      return builder.sources(ApplicationRun.class);
   }

} 
@Service
public class Socket_mesajServiceImpl implements Socket_mesajService {
@Autowired
private Socket_mesajDao socket_mesajDao;
@Override
public List<Socket_mesaj_template> Socket_mesaj_templateAll(String 
messageid) {
    return socket_mesajDao.Socket_mesaj_templateAll(messageid);
}

}

相反,
@Autowired
SocketHandler
添加到您的
WebSocketConfig
config类中,并将该实例添加到“
registry
”将解决您的问题

您在哪里声明
Socket_mesajService
bean?List sessions=new ArrayList()@Override public void handleTextMessage(WebSocketSession,TextMessage)抛出InterruptedException,IOException{for(Socket_session_model Socket_session_model:sessions){Socket_mesajService.Socket_mesaj_templateAll(Socket_session_model.getUserid())}}不,不,伙计,用这个类编辑你的问题。添加查看plsI没有看到你的
Socket\u mesajService
@Configuration
@EnableWebSocket
public class WebSocketConfig implements WebSocketConfigurer {
public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {
    registry.addHandler(new SocketHandler(), "/name");

 }
@Configuration
@EnableAutoConfiguration
@SpringBootApplication   (scanBasePackages={"com.polipool.*"})
@EntityScan( basePackages = {"com.polipool.model"})
public class ApplicationRun extends SpringBootServletInitializer {

  public static void main(String[] args) throws Exception {
        SpringApplication.run(ApplicationRun.class, args);
    }

  @Bean
    public ServletRegistrationBean servletRegistrationBean() {
        FacesServlet servlet = new FacesServlet();
        return new ServletRegistrationBean(servlet, "*.xhtml");
    }

  @Override
  protected SpringApplicationBuilder configure(SpringApplicationBuilder 
  builder) {
      return builder.sources(ApplicationRun.class);
   }

} 
@Service
public class Socket_mesajServiceImpl implements Socket_mesajService {
@Autowired
private Socket_mesajDao socket_mesajDao;
@Override
public List<Socket_mesaj_template> Socket_mesaj_templateAll(String 
messageid) {
    return socket_mesajDao.Socket_mesaj_templateAll(messageid);
}

}