昨天在編寫JavaMail工具類的時候,靜態方法調用靜態變量,這是很正常的操作,當時也沒多想,直接靜態注入。
@Component public class JavaMailUtil { @Autowired private static JavaMailSenderImpl mailSender; /** * 發送包含簡單文本的郵件 */ public static void sendText(String title,String text) { SimpleMailMessage simpleMailMessage = new SimpleMailMessage(); // 設置收件人 simpleMailMessage.setTo(new String[] {"3213452105@qq.com"}); //寄件人 simpleMailMessage.setFrom("857776215@qq.com"); simpleMailMessage.setSubject(title); simpleMailMessage.setText(text); // 發送郵件 mailSender.send(simpleMailMessage); System.out.println("JavaMailUtil類提示:---郵件已發送---"); } }
結果就出現了空指針異常。查詢了之后發現 @Autowired不能給靜態變量注入,所以出現空指針異常。然后開始找解決方法,暫時找到了一個能用的方法。
@Component public class JavaMailUtil { private static JavaMailSenderImpl mailSender; @Autowired private JavaMailSenderImpl javaMailSender; @PostConstruct public void init(){ mailSender = javaMailSender; } /** * 發送包含簡單文本的郵件 */ public static void sendText(String title,String text) { SimpleMailMessage simpleMailMessage = new SimpleMailMessage(); // 設置收件人 simpleMailMessage.setTo(new String[] {"3213452105@qq.com"}); //寄件人 simpleMailMessage.setFrom("857776215@qq.com"); simpleMailMessage.setSubject(title); simpleMailMessage.setText(text); // 發送郵件 mailSender.send(simpleMailMessage); System.out.println("JavaMailUtil類提示:---郵件已發送---"); } }