原因:Scheduled的加载时机要早于Autowired;
解决:通过在ApplicationContext中按名称查找service
mport org.springframework.beans.BeansException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.stereotype.Component;
/**
* @Description
* @Date20/01/08 12:44
* @Version V1.0
**/
@Component
public class ApplicationContextUtil implements ApplicationContextAware {
@Autowired
private static ApplicationContext context;
@Override
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
context = applicationContext;
}
public static ApplicationContext getApplicationContext() {
return context;
}
public static Object getBean(String name) {
return getApplicationContext().getBean(name);
}
此时就不用Autowired注入,要显示的获取
//例如获得redisService 类
RedisService redisService = (RedisService)ApplicationContextUtil.getBean("redisService");