欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

@Autowired注入的类为空

程序员文章站 2022-03-10 22:01:02
@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

相关标签: spring bean