七仔的博客

七仔的博客GithubPages分博

0%

记录下使用@Async的低级错误

用这个注解也挺久了,没想到还能出现这种低级错误,也可能是博客后端代码太久没更新了。。。

记录下使用@Async的低级错误

一、前言

错误使用@Async导致发送邮件发送了两次

用这个注解也挺久了,没想到还能出现这种低级错误,也可能是博客后端代码太久没更新了,还是记录下吧。。。

二、代码

  • A.java
1
2
3
4
5
6
7
8
9
10
11
12
//发送给博主的邮件
{
email.setTitle("您的博客有读者回复啦");
email.setTo(emailSetting.getString("username"));
emailUtil.send(email);
}
//发送给被回复方的邮件
if (null != comment.getReplyId() && !Objects.equals(comment.getReplyId(), 0)) {
email.setTitle("您在博客的评论有朋友回复啦");
email.setTo(reply.getEmail());
emailUtil.send(email);
}
  • EmailUtil.java
1
2
3
4
@Async
public void send(Email email) {
...
}

三、说明

上面就是关键的错误代码了,调用了两次emailUtil的send函数发送邮件,参数是同一个对象,只是修改了接收方的地址,但由于@Async的异步问题,导致上一个函数没法送完就被下面修改了接收方地址,最后导致实际发送的两次邮件地址都是下面的那个。

知道问题就好解决了,要么把上面的做成@Async,或者参数不要用同一个对象就可以了。

此为博主副博客,留言请去主博客,转载请注明出处:https://www.baby7blog.com/myBlog/142.html

欢迎关注我的其它发布渠道