- 初始化ApplicationContext时(在springboot启动类中)对该类的进行赋值
![在这里插入图片描述](https://img-blog.csdnimg.cn/20201018141606135.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDEwMDUxNA==,size_16,color_FFFFFF,t_70#pic_center)
import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.boot.SpringApplication;
public static void main(String[] args) {
SpringApplication springApplication = new SpringApplication(Application.class);
ConfigurableApplicationContext configurableApplicationContext = springApplication.run(args);
//解决WebSocket不能注入的问题
WebSocketServer.setApplicationContext(configurableApplicationContext);
}
- 在websocket类里加入:
/**
* 此处是解决无法注入的关键
*/
private static ApplicationContext applicationContext;
//举例
private StuService stuService;
public static void setApplicationContext(ApplicationContext applicationContext) {
MessageWebSocket.applicationContext = applicationContext;
}
// 具体根据自己需要注入的地方写一下方法
applicationContext.getBean(注入的类.class);
//比如:
applicationContext.getBean(StuService.class);
- 问题: websocket注入bean,通过直接在类里使用@Autowire和@Resource ,或者类上加@Component注解,ApplicationContext获取spring容器管理下的bean, 这些都属于spring管理的。 具体什么原因导致无法直接注入目前不明确。希望这些可以帮助到你们