Tag: 春天异步

测试Spring的@Async void返回方法

我在我的Spring应用程序中返回void (或Unit ,我正在写Kotlin)的@Async方法有点问题。 我不知道为什么,但是当@Async方法返回void它只是不执行,或者至少它不会做它应该的。 需要说的是,在我的异步方法中,我想用JavaMailSender发送一封邮件,所以没什么大不了的。 这里是方法: @Async override fun sendEmail(locale: Locale, subject: String, message: String, to: String) { val msg = sender.createMimeMessage() println("1") val helper = MimeMessageHelper(msg, true, "utf-8") helper.setFrom("email@example.com") helper.setTo(to) println("2") helper.setSubject(getSubject(locale, null)) println("3") helper.setText(processTemplate(locale, null, null), true) println("4") sender.send(msg) println("5") } 但电子邮件永远不会来,没有异常记录(我正在运行testNG测试)。 当我改变函数的签名使其返回Future<String>并在函数的末尾添加一些虚拟的返回行,然后调用service.sendEmail(…).get() ,方法的主体以奇迹般的方式执行和电子邮件到达。 在我的@Configuration类中,有@EnableAsync 。 我还实现了AsyncConfigurer并提供了自己的执行程序和异常处理程序,因为我认为它可能是我的执行程序bean定义的东西,但没有任何帮助。 这让我疯狂,因为我只是想在后台默默地执行一些东西,而且不起作用。 我默默地说,我不想被内部抛出的异常所困扰。 你有什么想法吗? 更新:所以建议@pleft,我在我的方法中打印一些打印。 现在,当我运行mvn clean […]