0

我正在使用 Spring 3.2.2.RELEASE 版本。@Async 注释没有按预期工作。

应用程序上下文.xml

<?xml version="1.0" encoding="windows-1252"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:tx="http://www.springframework.org/schema/tx"
       xmlns:aop="http://www.springframework.org/schema/aop"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
          http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
          http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd
          http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd">


<!-- Enable AspectJ style of Spring AOP -->
<aop:aspectj-autoproxy proxy-target-class="true"/>



    <context:component-scan base-package="com.pratik" />



    <tx:annotation-driven /> 

导入.java

    public String async() {
    final String asssetImportId = ObjectId.get().toHexString();

      process.asyncTest();

    logger.info("Ongoing");
    return asssetImportId;
  }

进程.java

@Async
  public void asyncTest() {
    try {
      Thread.sleep(1000);

    } catch (InterruptedException e) {

      e.printStackTrace();
    }
    logger.info("After Sleep");

  }

After Sleep日志应最后打印,但在继续之前打印

4

1 回答 1

0

Thread.sleep(000) 对我来说似乎是一个错字。如果 apo 允许您进行 ste 0 睡眠,这将是打印在您预期之前发生的一个很好的理由(可能并非总是如此,因为您在谈论 Async 打印的任何“顺序”都可能发生)

编辑: tx:annotation-driven 用于事务支持。添加上下文:annotation-config

Edit2:更正:使用“任务:注释驱动(不要与 tx 命名空间混淆)

于 2017-08-06T15:11:28.490 回答