SpringBoot2.0學習筆記二使用WebFlux實現簡單案例
阿新 • • 發佈:2019-02-16
一、建立路由函式的配置類
在學習筆記一中的專案中新增一個config包,新建一個名稱為RouterFunctionConfig的配置類,使用@Configuration
@Configuration註解用於標註該類為一個配置類,是Spring3.0後推出的用於代替xml配置的註解
二、在UserRepository類中新增findAll方法用於查詢全部使用者
學習筆記一中只實現了新增一個使用者的功能,使用的是SpringMVC的方式進行實現的,再新增一個findAll方法用於獲取已經新增的全部使用者的資訊,其具體的實現方法如下:
public Collection<User> findAll() { Collection<User> users = new ArrayList<>(); for (Integer index : repository.keySet()) { users.add(repository.get(index)); } return users; }
由於採用記憶體儲存使用者資訊的方式,此處只需便利儲存使用者的ConcurrentMap容器即可
三、配置路由實現前端的訪問
在路由函式的配置類中新增一個方法,該方法返回一個RouterFunction的物件,RouterFunction為一個介面型別(此處有待了解,大致意思是用於處理網路請求的一個介面吧),具體實現如下:
/** * Servlet請求介面:ServletRequest或者HTTPServletRequest * 響應介面:ServletResponse或者HTTPServletResponse * Spring5.0以後重新定義了伺服器請求和響應介面 * 請求介面:ServerRequest (封裝後的HTTPServletRequest) * 響應介面:ServerResponse (封裝後的HTTPServletResponse) * 即可支援Servlet規範,也可以支援自定義 ,比如Netty(WebServer) */ @Bean @Autowired public RouterFunction<ServerResponse> findAllPerson(UserRepository userRepository) { return RouterFunctions.route(RequestPredicates.GET("/person/findAll"), request -> { Collection<User> users = userRepository.findAll(); Flux<User> userFlux = Flux.fromIterable(users); return ServerResponse.ok().body(userFlux, User.class); }); }
關於webFlux還有很多需要學習的地方,此次只是模仿實現了一個簡單案例