繁体   English   中英

我应该在哪里放置@EnableAsync注释

[英]Where should I put @EnableAsync annotation

我需要以异步方式发送电子邮件,同时将数据保存到数据库中。

我的方法是这样的。

//I have tried with service layer annotating.But not worked. 
@EnableAsync 
class MyService{
 public String saveMethod(List listOfData){
    mail.sendEmailQuote(listOfData);
    mail.sendEmailWorkflowTaskAssignment(listOfData);
    myDao.saveData(listOfData);
 }
}

我需要以@Async方式执行以下方法。 我应该在哪里放置@EnableAsync注释。 这不是与时间表相关的事情。 用户单击“保存”按钮时会发生这种情况 应用是使用flex spring blazeDS。 没有我自己写的控制器。

我在代码中使用了@Async注释来跟踪2个方法。 那些是在课堂电话邮件。

@Async
sendEmailQuote(listOfData){}

@Async
sendEmailWorkflowTaskAssignment(listOfData){}

你能帮我找一下@EnableAsync的位置吗?

我参考这个样本

EnableAsync用于配置并启用Spring的异步方法执行功能,它不应该放在您的ServiceComponent类上,它应该放在您的Configuration类上,如:

@Configuration
@EnableAsync
public class AppConfig {

}

或者使用AsyncExecutor更多配置,例如:

@Configuration
@EnableAsync
public class AppConfig implements AsyncConfigurer {

 @Override
 public Executor getAsyncExecutor() {
     ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
     executor.setCorePoolSize(7);
     executor.setMaxPoolSize(42);
     executor.setQueueCapacity(11);
     executor.setThreadNamePrefix("MyExecutor-");
     executor.initialize();
     return executor;
 }
 }

有关更多详细信息,请参阅它的java doc

对于您所遵循的教程, EnableAsync位于Application类之上,后者使用AsyncExecutor配置extends AsyncConfigurerSupport

@SpringBootApplication
@EnableAsync
public class Application extends AsyncConfigurerSupport {

public static void main(String[] args) {
    SpringApplication.run(Application.class, args);
}

@Override
public Executor getAsyncExecutor() {
    ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
    executor.setCorePoolSize(2);
    executor.setMaxPoolSize(2);
    executor.setQueueCapacity(500);
    executor.setThreadNamePrefix("GithubLookup-");
    executor.initialize();
    return executor;
}
}

只需确保同一个类不调用@Async方法。 代理的自我调用不起作用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM