有时候在工具类中需要要操作数据库,即需要注入springMVC中的DAO层,但是此时工具类并非spring管理,所以使用@Autowired注入会报空指针异常,在试了好多方案都不行时,找到了比较适合springMVC的解决方法:
(1)在配置文件(springmvc.xml)中加入工具类所在包的扫描配置。
(2)使用@Component注解将工具类声明为spring组件,并静态初始化。
代码截取:
@Component
@ServerEndpoint("/websocket/{nowUid}")
public class WebSocketTest {
@Autowired
private ShareDao shareDao;
//...省略
//静态初始化
public static WebSocketTest webSocketTest;
//保证Bean初始化前已经装配了属性
@PostConstruct
public void init() {
webSocketTest = this;
}
//...
webSocketTest.shareDao.addToChatLog(nowUid, toUid, message, 1); //使用
参考如下代码:
package com.yyy.school.share.util;
import java.io.IOException;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.concurrent.ConcurrentHashMap;
import javax.annotation.PostConstruct;
import javax.websocket.EndpointConfig;
import javax.websocket.OnClose;
import javax.websocket.OnError;
import javax.websocket.OnMessage;
import javax.websocket.OnOpen;
import javax.websocket.Session;
import javax.websocket