에서 결과를 반환하는 일부 데이터베이스 데이터를 가져옵니다은 어떻게 플레이 프레임 워크 간단한 REST-API를 개발할하려고하고 난 다음에 붙어 비동기 플레이 액션
public CompletionStage<PagedList<Computer>> page(int page, int pageSize, String sortBy, String order, String filter) {
return supplyAsync(() -> {
return ebeanServer.find(Computer.class).where()
.ilike("name", "%" + filter + "%")
.orderBy(sortBy + " " + order)
.fetch("company")
.setFirstRow(page * pageSize)
.setMaxRows(pageSize)
.findPagedList();
} , executionContext);
}
그리고 두 번째는 다음과 같습니다 (예를 들어 일부 헤더 값)
:public CompletionStage<Result> list(int page, String sortBy, String order, String filter) {
// Run a db operation in another thread (using DatabaseExecutionContext)
return computerRepository.page(page, 10, sortBy, order, filter).thenApplyAsync(list -> {
// This is the HTTP rendering thread context
return ok(views.html.list.render(list, sortBy, order, filter));
}, httpExecutionContext.current());
}
지금 내가 클라이언트에 데이터를 반환하기 전에 몇 가지 값을 확인 할 데이터를 반환3210
public CompletionStage<Result> list(int page, String sortBy, String order, String filter) {
If(x=„somedata“){
// Run a db operation in another thread (using DatabaseExecutionContext)
return computerRepository.page(page, 10, sortBy, order, filter).thenApplyAsync(list -> {
// This is the HTTP rendering thread context
return ok(views.html.list.render(list, sortBy, order, filter));
}, httpExecutionContext.current());
} Else {
Return ok(„value is Not some Data ...“)
}
}
문제는 간단한 결과를 반환 할 수 없다는 것입니다.이 작업을 수행하는 가장 좋은 방법은 무엇입니까? 비동기 메서드에서도 결과를 왜곡 할 수 있습니까? 이것은 좋은 습관입니까? https://github.com/playframework/play-java-ebean-example
해결책 : 제가 다시 CompletableFuture 및 CompletionStage위한 Javadoc 읽기 안드리 쿠바에서 awnser 함께
예는 본 GitHub의 사이트를 형성한다. 이 작업을 수행하는 올바른 방법입니다. (실제로 중요한) 비동기로 Play 프레임 워크를 사용하려는 모든 사용자는 https://github.com/playframework/play-java-ebean-example의 예제를보고 CompletionStage (https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletionStage.html) 및 CompletableFuture (https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html)의 javadoc을 읽으십시오. 이를 염두에두고 비동기 코드를 작성하는 것은 매우 쉽고 즐겁습니다!