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,也就是说service根本就没有注入。
然后我就在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标注中必须写明注入的名字。
@Service("orderService")
public class OrderServiceImpl implements OrderService {SpringMVC中定时器继承Task后无法对service注入问题的更多相关文章
- SSM-SpringMVC-09:SpringMVC中以继承MutiActionController类的方式实现处理器
		------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥------------- MutiActionController类,多行动处理器,简单来说,就是可以一个处理器中有多个处理方法,分支 ... 
- SSM-SpringMVC-08:SpringMVC中以继承AbstractController的方式实现处理器
		------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥------------- AbstractController实现了一些特殊功能,如继承了WebContentGenerator缓存控制 ... 
- SpringMVC中redirect跳转后如何保存Model中的数据?
		@RequestMapping(value = "delete-user", method = RequestMethod.POST) public String deleteUs ... 
- Spring与Hibernate整合中,使用OpenSessionInViewFilter后出现sessionFactory未注入问题
		近期在知乎看到一句话,保持学习的有一种是你看到了很多其它的牛人,不甘心,真的不甘心. Spring和hibernate整合的时候,jsp页面做展现,发现展现属性出现: org.apache.jaspe ... 
- springMVC中不通过注解方式获取指定Service的javabean
		如TestService,其实现为TestServiceImpl,则可以通过 TestService testService = (TestService)SpringContextHolder.ge ... 
- SpringMVC中使用Cron表达式的定时器
		SpringMVC中使用Cron表达式的定时器 cron(定时策略)简要说明 顺序: 秒 分 时 日 月 星期 年份 (7个参数,空格隔开各个参数,年份非必须参数) 通配符: , 如果分钟位置为* 1 ... 
- 解决springmvc中文件下载功能中使用javax.servlet.ServletOutputStream out = response.getOutputStream();后运行出异常但结果正确的问题
		问题描述: 在springmvc中实现文件下载功能一般都会使用javax.servlet.ServletOutputStream out = response.getOutputStream();封装 ... 
- eclipse中的出现在打包一次后,后面新建的项目都出错了,出现support_v7下面出现红线及解决方法及为什么eclipse中项目继承ActionBarActivity解决方法一样
		第一次写博客,有什么问题或者想法的希望各位可以进行评论交流,望大家多多包涵! 遇到的问题是在新建的项目都出错了,出现support_v7下面出现红线及解决方法及为什么eclipse中项目继承Actio ... 
- Java中定时器Timer致命缺点(附学习方法)
		简介 这篇文章我一直在纠结到底要不要写,不想写一来因为定时器用法比较简单,二来是面试中也不常问.后来还是决定写了主要是想把自己分析问题思路分享给大家,让大家在学习过程中能够参考,学习态度我相信大部分人 ... 
随机推荐
- IntelliJ IDEA 14.x 与 Tomcat 集成,创建并运行Java Web项目
			转自:http://www.php-note.com/article/detail/854 IntelliJ IDEA 14.x 与 Tomcat 集成,创建并运行Java Web项目 作者:php- ... 
- 抽象工厂模式(Abstract Factory Pattern)
			动机(Motivation) 在软件系统中,经常面临着“一系列相互依赖的对象”的创建工作:同时,由于需求的变化,往往存在更多系列对象的创建工作.如何应对这种变化?如何绕过常规的对象创建方法(new), ... 
- 7月10日——[HouseStark] 扬帆起航--第一次会议
			本次会议为小组成员第一次会议 内容:每个成员提出一个及以上的项目及内容,成员内部商议并投票决定要做的项目 会议时长:90分钟 地点:电三楼8楼816室 成员 项目 讨论结果 崔文祥 高校就业信息汇总网 ... 
- POJ 题目3280 Cheapest Palindrome(区间DP)
			Cheapest Palindrome Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 7148 Accepted: 34 ... 
- How to address this problem?
			root# cmake .. No problem. root# make [ 63%] Linking CXX shared module collisionperceptor.so/usr/bin ... 
- X3850M2安装CertOS 7 KVM
			在旧的X3850中安装linux系统,研究KVM. 通过选择fedora和centos测试,最终选择centos7来安装. 先安装了一台,安装第二台时又出现第一台的问题,决定记录下来防止记忆出错. 1 ... 
- Jquery DIV滚动至浏览器顶部后固定不动代码
			$(function(){ //获取要定位元素距离浏览器顶部的距离 var navH = $(".win").offset().top; //滚动条事件 $(window).scr ... 
- 涵涵和爸爸习惯养成进度表(一)(May 5 - May 25)
			规则说明 三周时间(21天)内,没有哭脸,不超过三个无表情脸,可以给一个奖励(动画书等) 涵涵违反规则,在爸爸和妈妈都同意的情况下,可以给无表情脸 爸爸违反规则,在妈妈和涵涵都同意的情况下,可以给无表 ... 
- CMD的几个常用API
			一: define, 全局函数,用来定义模块. 参数: 1.id 模块标识(可省略) 2.deps模块依赖(比如jquery)(可省略) 3.factory:可能是: (1)对象 (2)字符串 ①和 ... 
- Object.notifyAll()
			void java.lang.Object.notifyAll() Causes all threads which are waiting on this object's monitor (by ... 
