通过异步解决超时问题-使用 Spring 的 @Async 实现异步调用
步骤一:开启异步支持(在启动类或配置类上添加@EnableAsync)
@EnableAsync
@SpringBootApplication
public class Application {public static void main(String[] args) {SpringApplication.run(Application.class, args);}
}
步骤二:创建一个异步服务类(如 SmsAsyncService
)
将需要异步的代码放在该类中,这里是短信的发送
@Service
public class SmsAsyncService {@Asyncpublic void sendApproveResultSms(String phone, String content) {try {SmsUtil.sendMsg(phone, content);log.info("短信发送成功,手机号:{},信息:{}", phone, content);} catch (Exception e) {log.error("短信发送失败:{}", e.getMessage());}}
}
步骤三:修改原业务方法,调用异步方法
log.info("发送系统消息,----------------------------------信息:{}",System.currentTimeMillis());// 拆出短信发送部分smsAsyncService.sendApproveResultSms(guild.getPhone(), status == 1 ? content + "已通过!" : content + "未通过,退回理由:" + dto.getReason() + "!");log.info("发送系统消息结束,----------------------------------信息:{}",System.currentTimeMillis());