spring+mybatis监听contral类后不能依赖注入解决

来源:互联网 发布:淘宝怎么卖二手东西 编辑:程序博客网 时间:2024/05/16 10:32

最近做的工程中需要定时任务,工程的框架是springmvc+mybatis,做定时任务时遇到了发现监听的contral类,在该contral类中就不能再使用@Autowired注解进行自动注入,导致service实例化时为null,不能调用service实现中的方法,报空指针异常(就是因为service的实现创建的对象为null)

既然不能使用@Autowired那就手工注入呗

 applicationContext = new ClassPathXmlApplicationContext(new String[]{"classpath*:spring-mybatis.xml"});
  TimeTaskServiceImpl timeTaskServiceImpl = (TimeTaskServiceImpl)applicationContext.getBean("findTimeTask");
  TaskService taskService = (TaskService)applicationContext.getBean("taskService");

手工注入是可以了,但是在TimeTaskServiceImpl 实现中海油dao接口,所以不能手工注入,但是因为TimeTaskServiceImpl 是手工注入的所以TimeTaskServiceImpl 类中不能使用@Autoired注入dao接口,这很费解

最后索性就不要dao接口了,但是不要dao接口有没法进行sql操作,经过找度娘找到了解决方法,让serivce的实现继承SqlSessionDaoSupport,

public class TimeTaskServiceImpl extends SqlSessionDaoSupport implements TimeTaskService{
 public List<Map<String, Object>> findTimeTask(){
   SqlSession session=this.getSqlSession();
   List<Map<String, Object>> list = session.selectList("findTimeTask");//sql**.xml文件中要执行的sql的id,通过这个找到要执行的sql
   return list;
 }

这样就可以跳过dao接口直接执行需要执行的sql,不能依赖注入的问题解决了!

1 0
原创粉丝点击