Java 针对不同执行器的Spring异步方法

Java 针对不同执行器的Spring异步方法,java,spring,asynchronous,Java,Spring,Asynchronous,假设我的spring配置中有多个bean都是从一个类创建的 <bean id="beanInstance1" class="foo.BeanClass"/> <bean id="beanInstance2" class="foo.BeanClass"/> <bean id="beanInstance3" class="foo.BeanClass"/> <task:executor id="executor1" pool-size="10"/> &

假设我的spring配置中有多个bean都是从一个类创建的

<bean id="beanInstance1" class="foo.BeanClass"/>
<bean id="beanInstance2" class="foo.BeanClass"/>
<bean id="beanInstance3" class="foo.BeanClass"/>

<task:executor id="executor1" pool-size="10"/>
<task:executor id="executor2" pool-size="10"/>
<task:executor id="executor3" pool-size="10"/>

我想启用该类的方法的异步执行,但所有bean都有自己的线程池执行器。我怎样才能做到这一点?这是我的简单课程

public class BeanClass {

    @Async
    Future<Object> doSomeAsyncTask(Object data) {
        /* async task executed here */
        return new AsyncResult<>(null)
    }

}
公共类BeanClass{
@异步的
未来doSomeAsyncTask(对象数据){
/*异步任务在此执行*/
返回新的异步结果(null)
}
}

恐怕你不能用注释来做这件事,因为这只允许定义一个执行者(你可以把名字传给
@Async
注释)。@m.Deinum好吧,这太糟糕了。。。无论如何谢谢你!如果这个配置是“有点静态的”,那么您可以将BeanClass声明为抽象的,并创建只与@Async中的值不同的实现。不会很漂亮,但会做你需要的。您可以将这些类隐藏在子包或smth中。恐怕您不能使用注释来实现这一点,因为这只允许定义单个执行器(您可以将名称传递到
@Async
注释中)。@m.Deinum好吧,这太糟糕了。。。无论如何谢谢你!如果这个配置是“有点静态的”,那么您可以将BeanClass声明为抽象的,并创建只与@Async中的值不同的实现。不会很漂亮,但会做你需要的。您可以将这些类隐藏在子包或smth中。