autowired 空指针_SpringBoot邮件发送 注入JavaMailSenderImpl时出现NullPointerException空指针异常...

一、问题描述

近日在做邮件发送功能时 莫名其妙的出现了NullPointerException空指针异常。

代码在测试的时候完全正常 但封装成工具类再调用的时候就报错。

在解决的过程中也查找过很多相关资料 但帮助不是很大。

有个方法是添加@PostConstruct注解然后初始化 但是并没有作用

还有个方法是新建一个普通类 确实能解决部分问题(如果你不是用Thymeleaf模板发送的话)

a39218a0ea49f69e612cd9988339dc7a.png

改为:

8ddadb6b0cfd437e9b91fbd3895eee85.png

但我在邮件里需要发送Thymeleaf页面 因此需要注入TemplateEngine随后 在用该方法注入TemplateEngine的时候:

5cc24099015e3a2d0622580e32df4709.png

在解析模板页面的时候直接发送了字符串比如:

8e60241417086e9fae05443765a3ce8d.png

邮件里直接发送了"mailTemplate"字符串 根本不是我要发送的页面内容 这谁顶得住呀?

因此 该方法也被否决了

这个问题研究一整天了 然而 在我的努力下 终于在无意间成功解决了?

二、解决方法

1.我在邮件发送工具类里给注入的JavaMailSenderImpl加上了static 这个static必须去掉

因为静态方法是属于类的 普通方法才是属于实体对象(即New出来的对象)的

spring注入是在容器中实例化对象 所以不能使用静态方法

2.要给工具类加上@Component注解

用@autowired注入JavaMailSenderImpl后 将整个类交给了Spring管理

因此类上必须加@Component

在调用该工具类的时候也要用@Autowired注入

因此 最终的工具类代码是这样的:

077b3517e76aefedd49a25892322fc59.png

mailTemplate.html 模板页面:

7e4e416614acd0d9aa283760fec60adb.png

测试:

d660a3e7c0765320b68fdca2507985f2.png

编辑整理 丨王田浩

1cff65bf13e2d5fd648b0a75d4844140.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值