在非Controller中 使用 @Autowired 或 @Resource注解变量 为null问题,3种解决方法
方法一:
使用静态变量 加 @PostConstruct 解决。
@Component //关键1
public class ArticlesReceiver {
@Resource
private WechatArticlesTempService wechatArticlesTempService;
public static ArticlesReceiver articlesReceiver; //关键2
@PostConstruct //关键3
public void init(){
articlesReceiver = this;
}
public WechatArticlesTemp getResposeArticlesBoby(String mediaId) {
WechatArticlesTemp articlesTemp = articlesReceiver.wechatArticlesTempService.getById(mediaId); //关键4
return articlesTemp ;
}
}
方法二:
使用静态变量,加set注入
@Component //关键1
public class ArticlesReceiver {
private static WechatArticlesTempService wechatArticlesTempService; //关键2
@Autowired //关键3
public void setWechatArticlesTempService (WechatArticlesTempService wechatArticlesTempService){
ArticlesReceiver.wechatArticlesTempService = wechatArticlesTempService;
}
public WechatArticlesTemp getResposeArticlesBoby(String mediaId) {
WechatArticlesTemp articlesTemp = wechatArticlesTempService.getById(mediaId); //关键4
return articlesTemp ;
}
}
方法三:
代码注入 , SpringContectHolder类将用到的类的class读入让后再调用类中方法
@Component //关键1
public class ArticlesReceiver {
private static WechatArticlesTempService wechatArticlesTempService = SpringContextHolder.getBean(WechatArticlesTempService.class); //关键2
public WechatArticlesTemp getResposeArticlesBoby(String mediaId) {
WechatArticlesTemp articlesTemp = wechatArticlesTempService.getById(mediaId); //关键3
return articlesTemp ;
}
}

浙公网安备 33010602011771号