@Async不生效原因

开发过程中使用了@Async注解,但是没有生效,查找定位了好久,现将该注解失效的场景罗列总结下,以后有类似问题可以从下面场景解决,不排除有其他场景会造成该注解失效,欢迎补充。
@Async注解使用有几个限制:

  1. 两个方法都在同一个类里面,只是一个方法调用另一个异步方法,不生效。

    解决方法:拆分两个方法,将异步方法单独放在一个类里面,然后再去调用就解决了。

  2. 有接口方法的实现类里的注解不生效。
    例子:
    @Controller类:DemoController
    接口:DemoService
    接口的实现@Service类:DemoServiceImpl
    其中的同步方法为:incr()
    DemoController中的实例化为

    @Autowired
    private DemoService demoService;
    

    调用的时候为:

    demoService.incr();
    

    那么这个异步没有效果。
    解决方法:在实现类中调用一个没有接口的类才可以。

你可能感兴趣的:(后端,java)