私は@Service
非同期に実行するメソッドの1つを持つSpring Bootアプリケーションのクラス。私が読んだようにメソッドは@Async
注釈付きで、TaskExecutor
Beanも実行する必要があります。しかし、Springマニュアルでは http://docs.spring.io/spring/docs/current/spring-framework-reference/html/scheduling.htmlTaskExecutor
アノテーション付き、XML構成なし。 XMLなしで、注釈のみでSpring BootでTaskExecutor
Beanを作成することは可能ですか?ここに私のサービスクラス:
@Service
public class CatalogPageServiceImpl implements CatalogPageService {
@Override
public void processPagesList(List<CatalogPage> catalogPageList) {
for (CatalogPage catalogPage:catalogPageList){
processPage(catalogPage);
}
}
@Override
@Async("locationPageExecutor")
public void processPage(CatalogPage catalogPage) {
System.out.println("print from Async method "+catalogPage.getUrl());
}
}
@Bean
メソッドをSpring Bootアプリケーションクラスに追加します。
@SpringBootApplication
@EnableAsync
public class MySpringBootApp {
@Bean
public TaskExecutor taskExecutor() {
ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
executor.setCorePoolSize(5);
executor.setMaxPoolSize(10);
executor.setQueueCapacity(25);
return executor;
}
public static void main(String[] args) {
// ...
}
}
XMLの代わりにJava configを使用してSpringを構成する方法については、Spring Frameworkリファレンスドキュメントの Javaベースのコンテナー構成 を参照してください。
(注:@Configuration
にはすでに@SpringBootApplication
が含まれているため、@Configuration
をクラスに追加する必要はありません。
最初に-ルールを見てみましょう-@Asyncには2つの制限があります:
したがって、processPage()メソッドは別のクラスにある必要があります