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

相关文章:

  • 2022-01-30
  • 2021-05-16
  • 2022-12-23
  • 2022-02-07
  • 2022-12-23
  • 2021-07-06
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2021-11-17
  • 2022-12-23
  • 2021-12-01
  • 2022-12-23
  • 2021-10-19
  • 2022-12-23
相关资源
相似解决方案