春天@Async没被截获

时间:2014-05-01 14:21:00

标签: java spring asynchronous threadpool executorservice

我正在推出一个基本的春天@Async示例。

我有一个如下界面

public interface AsyncInterface
{

    public void test();
}

以下是实施

@Service
public class AsyncImpl implements AsyncInterface
{

    @Async
    public void test()
    {
        System.out.println( " This is seperate thread - let me sleep ");

        for ( int i = 0; i < 10 ; i ++ )
        {
            try
            {
                Thread.sleep(1000);
            }catch(Exception ex)
            {
            }
        }
    }
}

我在另一个spring组件中注入了上面的实现,并调用了用@Async注释的方法。

<task:annotation-driven/>中有application-context

@Async方法将被异步调用并在调用线程的范围内执行。异步行为没有发生。

如果我在test()方法中添加自定义注释,并且如果我编写一个方面来拦截,它就可以工作。

出于某种原因,AsyncExecutorIntercpetor没有被触发(至少我在日志中看不到它)。

我在这里错过了一些东西。从另一个弹簧组件调用Cant @Async

由于 生命

这就是我调用异步

的方式

我从另一个spring @Service组件

调用Async
@Component
public class MyComponentImpl implements ComponentInterface
{
    @Autowired
    private AsyncInterface asyncInterface;

    @Override
    public void testAsyncInvocation() {
        logger.debug( " Before calling async ");
        asyncInterface.test();
        logger.debug( " After calling async ");
    }
}

配置

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:p="http://www.springframework.org/schema/p" xmlns:context="http://www.springframework.org/schema/context"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tx="http://www.springframework.org/schema/tx"
    xmlns:aop="http://www.springframework.org/schema/aop" xmlns:task="http://www.springframework.org/schema/task"
    xsi:schemaLocation="http://www.springframework.org/schema/beans 
    http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
    http://www.springframework.org/schema/context  
    http://www.springframework.org/schema/context/spring-context-3.0.xsd
    http://www.springframework.org/schema/tx 
    http://www.springframework.org/schema/tx/spring-tx-2.5.xsd
    http://www.springframework.org/schema/aop 
    http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
    http://www.springframework.org/schema/task 
    http://www.springframework.org/schema/task/spring-task-3.0.xsd">

    <aop:aspectj-autoproxy />

    <context:annotation-config />

    <tx:annotation-driven />

    <task:annotation-driven/>
</beans>

0 个答案:

没有答案