解决Spring在线程中注入为空指针的问题
2024-08-29 22:44:08
在启用线程中使用来jdbcTemplate来查询数据库,引入jdbcTemplate是用Spring @Autowired注解 方式引入,但是在运行中 jdbcTemplate 总是 空指针
解决方法:
定义一个静态获取Bean的类
@Component
public class SpringUtils implements ApplicationContextAware{
//Spring应用上下文环境
private static ApplicationContext applicationContext;
/**
* 实现ApplicationContextAware接口的回调方法,设置上下文环境
*/
public void setApplicationContext(ApplicationContext applicationContext)
throws BeansException {
this.applicationContext = applicationContext;
} public static ApplicationContext getApplicationContext(){
return applicationContext;
}
/**
* 获取对象 这里重写了bean方法,起主要作用
*/
public static Object getBean(String name) throws BeansException{
return applicationContext.getBean(name);
}
}
线程类这样写:
public class MyTread extends Thread{
//不要使用 @Autowired
private JdbcTemplate jdbcTemplate;
public void run()
{
this.jdbcTemplate= SpringUtils.getApplicationContext().getBean(JdbcTemplate.class);
while(true){
ArrayList res = (ArrayList).this.jdbcTemplate.queryForList("写自己的sql语句");
//延时功能
try {
//延时两秒
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
最新文章
- 自己用js实现全屏滚动
- Linux学习之让进程在后台可靠运行的方法详解
- CSS 制作三角形原理剖析
- STSdb,最强纯C#开源NoSQL和虚拟文件系统 4.0 RC2 支持C/S架构
- SQL Server:查看SQL日志文件大小命令:dbcc sqlperf(logspace)
- Swift 关键字汇总
- 读书笔记_Effective_C++_条款四十三:学习处理模板化基类的名称
- C# 实例化多线程组
- 18. 4Sum -- 找到数组中和为target的4个数
- [收藏]Spring Security中的ACL
- Python生成器与yield
- cloudstack安装篇1-linux命令修改IP信息
- struts2结合生成验证码
- C#执行javascript代码
- R语言做文本挖掘 Part5情感分析
- 最小生成树之Kruskal(克鲁斯卡尔)算法
- H5_0007:使用base64做为背景图片
- TCP-IP详解笔记6
- springboot Redis 缓存
- Nuxtjs初始