我正在使用 Spring WebFlux 對 SpringBoot 應用程式進行代碼審計,團隊Publisher直接將其放入Model并決議視圖。
我想知道這是一種好還是壞的做法,因為它似乎有效,但在這種情況下,哪個組件負責執行Publisher?
我認為這ViewResolver是它的作業,也不應該是它的作業。你怎么認為 ?
此外,如果Publisher不是由 執行,如果這些類回傳錯誤,則此類Controller注釋的@ControllerAdvice類ExceptionHandler將不起作用Publisher,對嗎?
uj5u.com熱心網友回復:
對我來說并不震驚。當Publisher處理復雜的東西時,實際上似乎是復雜性和效率之間的一個很好的權衡。
它的優點是Publisher僅在需要時才執行。盡管如果ModelMap處理程式沒有能力正確使用它,這可能是一個問題。至于例外情況,也許您不希望它被執行并只是列印,從而更快地失敗。
至于執行什么的問題Publisher,ViewResolver可以使用特定的,因為它是負責“渲染”的組件。恕我直言,這就是它的作業。我不知道標準 ViewResolver 是否可用于檢測與發布者的值并自動處理這些值,但這似乎完全可行且有效。
uj5u.com熱心網友回復:
Spring WebFlux 檔案的摘錄:
與 Spring MVC 不同,Spring WebFlux 明確支持模型中的反應式型別(例如,Mono 或 io.reactivex.Single)。此類異步模型屬性可以在 @RequestMapping 呼叫時透明地決議(并更新模型)為其實際值,前提是在沒有包裝器的情況下宣告了 @ModelAttribute 引數,如以下示例所示:
@ModelAttribute
public void addAccount(@RequestParam String number) {
Mono<Account> accountMono = accountRepository.findAccount(number);
model.addAttribute("account", accountMono);
}
@PostMapping("/accounts")
public String handle(@ModelAttribute Account account, BindingResult errors) {
// ...
}
此外,任何具有回應式型別包裝器的模型屬性都會在視圖渲染之前決議為其實際值(和更新的模型)。
https://docs.spring.io/spring-framework/docs/current/reference/html/web-reactive.html#webflux-ann-modelattrib-methods
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/354965.html
標籤:弹簧靴 反应式编程 弹簧-webflux
