解决多线程下数据库操作问题
问题描述:在Controller中使用@Autowired注入的db对象,可以操作数据库,但是在多线程中注入的db为null,导致一直空指针异常
解决办法:
1.用单例模式创建一个数据库辅助类:
public class DBHelper { private static DB db=null; public DBHelper(DB db) { DBHelper.db=db; } private DBHelper(){ } /** * 用于处理多线程中采集到的数据出现空指针情况 */ public static DB getDB(){ return db; } }
2.在Controller中使用数据库辅助类的构造函数将db传入:
//传递db对象 DBHelper dbHelper=new DBHelper(db);
3.最后在你引用的地方调用这个db:
DB db=DBHelper.getDB();
db.saveAndFlush(arg);
就ok了!