
[英]Where should I put @Transactional annotation: at an interface definition or at an implementing class?
[英]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的异步方法执行功能,它不应该放在您的Service
或Component
类上,它应该放在您的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.