什么情况下才能用autowired?
当当前类属于spring IOC容器管时候就可以,比如在applicationContext.xml里有定义
就是说在spring上下文里能够找到
但是比如quartz job是quartz自己实例化,所以当下面这么做会报null pointer
package com.xmal.dms.quatz;import java.util.List;import org.quartz.Job;import org.quartz.JobExecutionContext;import org.quartz.JobExecutionException;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.web.context.support.SpringBeanAutowiringSupport;import com.xmal.dms.dao.mapper.AbandonMovingToNewBedMapper;import com.xmal.dms.pojo.OccupancyInfo;public class AbandonMovingToNewBed implements Job{ @Autowired AbandonMovingToNewBedMapper abandonMovingToNewBedMapper; @Override public void execute(JobExecutionContext context) throws JobExecutionException { // TODO Auto-generated method stub ListOccupancyInfoList = abandonMovingToNewBedMapper.QueryOccupancyWhereStatusIsTiaoFang("调房"); System.out.println("OccupancyInfoList"+OccupancyInfoList); }}
这时只要加一句
SpringBeanAutowiringSupport.processInjectionBasedOnCurrentContext(this);
在
List<OccupancyInfo> OccupancyInfoList = abandonMovingToNewBedMapper.QueryOccupancyWhereStatusIsTiaoFang("调房");
就好了
解释:
https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/web/context/support/SpringBeanAutowiringSupport.html#processInjectionBasedOnCurrentContext-java.lang.Object-
Process @Autowired
injection for the given target object, based on the current web application context.
Intended for use as a delegate.