SpringBoot2.0学习笔记二使用WebFlux实现简单案例

一、创建路由函数的配置类

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

猜你喜欢

转载自blog.csdn.net/wlove514/article/details/82817529