一、创建路由函数的配置类
在学习笔记一中的项目中添加一个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还有很多需要学习的地方,此次只是模仿实现了一个简单案例