什么情况下才能用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 List<OccupancyInfo> OccupancyInfoList = 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.