@Autowired注入的类为空
程序员文章站
2022-06-23 11:15:15
@Autowired注入的类为空注入的类为空可能是在注入的时候,bean还没有初始化,解决方法有两种1、在set方法的时候注入@Componentpublic class SendMailUtils { private static JavaMailSender javaMailSender; @Autowired public void setJavaMailSender(JavaMailSender javaMailSender) { SendMailU...
@Autowired注入的类为空
注入对象的那个类本身,需要通过Spring注入的方式来构建,如果通过new构造,这样会导致其Autowired 的对象为空。这是因为其本身没有交由Spring 的IOC容器进行管理,而是由JVM构建,所以Spring将无法将其本身管理的对象注入进去。
用@autowired注入JavaMailSender后,表示整个类交给了spring管理(类上加@Component ),在其他地方调用的时候,也应该从spring容器中获取,而不能用new去实例化
注入的类为空可能是在注入的时候,bean还没有初始化,解决方法有两种
1、在set方法的时候注入
@Component
public class SendMailUtils {
private static JavaMailSender javaMailSender;
@Autowired
public void setJavaMailSender(JavaMailSender javaMailSender) {
SendMailUtils.javaMailSender = javaMailSender;
}
}
2、使用@PostConstruct注解,在init方法初始化时初始化对象
@Component
public class SendMsgUtils {
@Autowired
private ReactManageService reactManageService;
@Autowired
private SendMailUtils sendMailUtils;
private static SendMsgUtils sendMsgUtils;
@PostConstruct
public void init() {
sendMsgUtils = this;
sendMsgUtils.reactManageService = this.reactManageService;
sendMsgUtils.sendMailUtils = this.sendMailUtils;
}
}
本文地址:https://blog.csdn.net/CAOXIAOMAN/article/details/112005193