SpringMVC中定时器继承Task后无法对service注入问题 收藏 Pig-man 发表于 1年前 阅读 1863 收藏 1 点赞 2 评论 0 330元/年抢阿里云香港云服务器,节省8
来源:互联网 发布:linux wps 切换输入法 编辑:程序博客网 时间:2024/06/07 13:16
SpringMVC中定时器继承Task后无法对service注入问题
收藏
- 发表于 1年前
- 阅读 1863
- 收藏 1
- 点赞 2
- 评论 0
330元/年抢阿里云香港云服务器,节省80%出海成本>>>
摘要: SpringMVC中定时器继承Task后无法对service注入问题,
最近在做一个Spring+MyBatis的一个项目,其中用到了Redis的存储,然后遇到问题是这样的:
RedisTask是通过定时器来每分钟像数据库里推送的,于是就有了
public class RedisTask extends Task { public void execute(TaskExecutionContext executor) throws RuntimeException { …… …… } }
然后在定时器的任务中通过对Redis的调用,推送到本地数据库
OrderService orderService = new OrderService();Order order = new Order();int num = orderService.add(order);System.out.println("插入条数为:" + num);
那么问题来了,tomcat开始没次调用定时器的RedisTask就开始报错,debug发现orderService为null,考虑了许久,意识到orderService可能根本就没有注入。
然后我就在Spring的配置文件里查看标注问题,发现根本没问题,再然后发现此方法继承了Task,然后查一下
:定时器继承了Task之后,在定时器调用此方法后会直接执行execute方法,来不急执行标注进行注入。
@Resource private OrderService orderService;
然后解决方案:
1、引入ApplicationContextUtil的工具类
package com.aneop.common.util; import org.springframework.context.ApplicationContext;import org.springframework.context.ApplicationContextAware; public class ApplicationContextUtil implements ApplicationContextAware { private static ApplicationContext applicationContext; public static ApplicationContext getApplicationContext() { return applicationContext; } public void setApplicationContext(ApplicationContext applicationContext) { ApplicationContextUtil.applicationContext = applicationContext; } public static Object getBean(String beanName) { return applicationContext.getBean(beanName); }}
2、在execute方法中以这种方式进行对service进行注入
OrderService orderService = (OrderService)ApplicationContextUtil.getBean("orderService");
注:在service的接口的@Service标注中必须写明注入的名字。 Spring扫描会将OrderService进行IOC实例化,这样在上面的ApplicationContextUtil工具类gerBean取得orderService。@Service标注名要与ApplicationContextUtil中的getBean中的实例名相对应。
@Service("orderService")public class OrderServiceImpl implements OrderService {
阅读全文
0 0
- SpringMVC中定时器继承Task后无法对service注入问题 收藏 Pig-man 发表于 1年前 阅读 1863 收藏 1 点赞 2 评论 0 330元/年抢阿里云香港云服务器,节省8
- 使用 vim + ctags + cscope + taglist 阅读源码 收藏 bo博 发表于 5年前 阅读 20197 收藏 14 点赞 4 评论 1 最近,准备跟学长一起
- SpringMVC中定时器继承Task后无法对service注入问题
- 浏览器中的data类型的Url格式,data:image/png,data:image/jpeg! 收藏 苏生不惑 发表于 4年前 阅读 3943 收藏 3 点赞 0 评论 0 腾讯云·
- Netty实现HTTP服务器端(处理POST和GET请求) 发表于2年前(2014-05-27 16:25) 阅读(7385) | 评论(0) 11人收藏此文章, 我要收藏 赞2 1月16日厦门
- android4.1 平板隐藏System Bar 发表于1年前(2012-11-05 18:24) 阅读(1985) | 评论(4) 16人收藏此文章, 我要收藏 赞0 android4.1 平
- SpringMVC中类继承TimerTask后无法对service注入问题
- 收藏点赞代码,发表评论代码
- MySQL存储引擎InnoDB与Myisam的六大区别 Junn 发表于3年前 原 MySQL存储引擎InnoDB与Myisam的六大区别 收藏 Junn 发表于 3年前 阅读 594
- ubuntu中安装man手册查看函数原型 分类: linux使用 2010-02-28 22:50 2453人阅读 评论(0) 收藏 举报 ubuntu语言linuxlibrarysocketsys
- 原 异常解决WARNING: Could not open/create prefs root n... 发表于2年前(2013-08-14 14:39) 阅读(3632) | 评论(4) 4人
- InputStream中read()与read(byte[] b) 标签: bytestringjavafilenullpath 2012-08-21 20:38 15233人阅读 评论(1) 收藏
- UIScrollView中的UITextField键盘遮挡问题的最简单解决办法 2012-10-31 15:10 1743人阅读 评论(0) 收藏 举报 两步: 1重载textFieldDidBe
- spring中类继承TimerTask后 service 和dao 无法注入 以及参数无法传递
- textarea 输入框限制字数 时间:2014-07-16 20:56:54 阅读:1948 评论:0 收藏:0 [点我收藏+] 标签:style ja
- net-snmp的编译 2010-03-17 14:14 951人阅读 评论(0) 收藏 举报 makefileapplicationpathcompilationtranslationperl 对
- 使用JMF(Java Media Framework)使用电脑摄像头 何天贵 何天贵 发布时间: 2013/05/24 16:18 阅读: 9873 收藏: 14 点赞: 1 评论: 3 JMF(J
- wordpress中,阿里云服务器实现自动邮件回复评论
- JVM字节码编译过程 from book:java虚拟机精讲
- D
- js 模拟百度文库评分
- Dictionary转Json(序列化)
- iOS-AppIcon及LaunchImage整套设置
- SpringMVC中定时器继承Task后无法对service注入问题 收藏 Pig-man 发表于 1年前 阅读 1863 收藏 1 点赞 2 评论 0 330元/年抢阿里云香港云服务器,节省8
- 深入理解Java虚拟机(2)-.Class文件格式(一)
- hdoj 1090
- PF_RING开发指南 安装指南
- Logstash input output filter插件总结
- SQLite
- 【Oracle 12c ASM专题】Flex Diskgroup相关概念
- 使用面向对象思想建立一个学生管理系统
- MFC显示颜色选择对话框