在使用@Async注解的时候 如果直接把这个注解标注在类上面 是可以正常运行的 类里所有的方法都变成异步的了。可是当把它标注在方法上的时候 这个注解就无效了 请问下可能的原因是什么呢?

解决方案 »

  1.   

    标注在方法上只能在其他类比如controller类调用生效,如果在本类中调用,只会把它当作一个普通方法用,失去了异步的功能
      

  2.   

    @EnableAsync  启动类上面没加这个注解吗
      

  3.   

    的确没加@EnableAsync 这个注解  emm 是不是我在service里面的一个方法里面加了@Async 在使用它的controller类里要加@EnableAsync
      

  4.   

    看了一下@EnableAsync这个注解 好像只有java类配置的方式才需要用到它吧?我是在xml文件中配置的 因为程序里面有用到quatz进行定期任务执行的配置 所以是这么写的
     <task:executor id="executor" pool-size="10"/> <task:scheduler id="scheduler" pool-size="10"/>
        <task:annotation-driven scheduler="scheduler" executor="executor" proxy-target-class="true"/>
    现在我直接把@Async加在类上面作为注解 整个类的方法都作为异步任务了 但是把这个注解加到类的方法中 却不是异步执行 也不会报错误 也没有在类内互相调用 
      

  5.   

    又试着瞎搞了一下 发现加仑@Async的方法在junit测试的时候是正常异步执行的 但是打开以后在网页里不正常执行的 求大佬帮忙