SpringBoot开启异步调⽤⽅法
异步调⽤⽆需等待,⽅法相当于⼦线程,后台执⾏,主线程执⾏完成,⼦线程开始执⾏。
SpringBoot 开启异步执⾏仅需两步:
⽅法上加 @Async
@Override
@Async
@Transactional(rollbackFor = Exception.class)
public Integer init(DatePojo datePojo){
springboot原理图解
//xxxxxxxxxxx 业务略 xxxxxxx
log.info(" 起⽌⽇期为: {} , {} ", start, end);
//xxxxxxxxxxxxx 业务略 xxxxxxx
log.info(" ------------------ 【能源⼊库完成】------------------ {}", nyList);
log.info(" ------------------ 【新能源初始化结束】------------------");
return 0;
}
main ⽅法开启 @EnableAsync
@SpringBootApplication
@EnableAsync
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
controller
@PostMapping("/ny")
public ReturnMessage ny( @RequestBody DatePojo datePojo, BindingResult result) {
log.info(" 【能源初始化接⼝调⽤开始】");
//业务类
Integer data = xstjJdcNyService.init(datePojo);
log.info(" 【能源初始化接⼝调⽤结束】");
return new ReturnMessage(Code(), Msg(), data);
}
执⾏结果
可以看到 controller 先执⾏完成然后返回状态,接着⽅法才开始执⾏。
错误
Spring之AOP奇葩报错:Null return value from advice does not match primitive return type for
原因是返回为null 基本类型要⽤包装类型。
总结
1 使⽤了@Async的⽅法,会被当成是⼀个⼦线程,所有整个sendSms⽅法,会在主线程执⾏完了之后执⾏
2 同⼀个类中,⼀个⽅法调⽤另外⼀个有@Async的⽅法,注解是不会⽣效的!
以上就是本⽂的全部内容,希望对⼤家的学习有所帮助,也希望⼤家多多⽀持。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。