【SpringBoot】集成 Web Flux

匿名 (未验证) 提交于 2019-12-02 21:53:52
前言:

必需学会SpringBoot基础知识

简介:

Takes an opinionated view of building production-ready Spring applications. Spring Boot favors convention over configuration and is designed to get you up and running as quickly as possible.

工具:

JDK8

apache-maven-3.5.2

IntelliJ IDEA 2018.1.3 x64

(1)新建一个springboot工程
(2)pom.xml
    <dependencies>         <dependency>             <groupId>org.springframework.boot</groupId>             <artifactId>spring-boot-starter-webflux</artifactId>         </dependency>          <dependency>             <groupId>org.springframework.boot</groupId>             <artifactId>spring-boot-starter-test</artifactId>             <scope>test</scope>         </dependency>         <dependency>             <groupId>io.projectreactor</groupId>             <artifactId>reactor-test</artifactId>             <scope>test</scope>         </dependency>          <dependency>             <groupId>org.projectlombok</groupId>             <artifactId>lombok</artifactId>         </dependency>     </dependencies>
(3)建立实体 User (简化不写了)
(4)建立 repository
package com.lwc.repository;  import com.lwc.pojo.User; import org.springframework.stereotype.Repository;  import java.util.Collection; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentMap; import java.util.concurrent.atomic.AtomicInteger;  /**  * @author eddie.lee  * @Package com.lwc.repository  * @ClassName UserRepository  * @description this is dao  * @date created in 2018-06-07 21:36  * @modified by  */ @Repository public class UserRespository {      /**      * 使用内存方式存储 ===》 Map      */     private ConcurrentMap<Integer, User> repository = new ConcurrentHashMap<>();      /**      * id生成      */     private final static AtomicInteger idGenerator = new AtomicInteger();      /**      * 保护用户对象      *      * @param user      * @return 如果保存成功,返回true,否则,返回false      */     public boolean save(User user) {         // id 从 1 开始         Integer id = idGenerator.incrementAndGet();         // 设置主键         user.setId(id);          return repository.put(id, user) == null;     }      /**      * 返回所有用户列表      *      * @return      */     public Collection<User> findAll(){         return  repository.values();     }  }  
(5)建立控制层
package com.lwc.controller;  import com.lwc.pojo.User; import com.lwc.repository.UserRespository; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController;  /**  * @author eddie.lee  * @Package com.lwc.controller  * @ClassName UserController  * @description  * @date created in 2018-06-07 21:44  * @modified by  */ @RestController public class UserController {      private final UserRespository userRespository;      @Autowired     public UserController(UserRespository userRespository) {         this.userRespository = userRespository;     }      @PostMapping("/person/save")     public User save(@RequestParam("name") String name) {         User user = new User();         user.setName(name);         if (userRespository.save(user)) {             System.out.printf("用户对象: %s 保存成功! ", user);             System.out.println(" ");         }         return user;     }  } 

(6)PostMan测试,插入接口。

http://localhost:8080/person/save?name=zhangsan2

{


}

package com.lwc.config;  import com.lwc.pojo.User; import com.lwc.repository.UserRespository; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.web.reactive.function.server.RequestPredicates; import org.springframework.web.reactive.function.server.RouterFunction; import org.springframework.web.reactive.function.server.RouterFunctions; import org.springframework.web.reactive.function.server.ServerResponse; import reactor.core.publisher.Flux; import reactor.core.publisher.Mono;  import java.util.Collection;  /**  * @author eddie.lee  * @Package com.lwc.config  * @ClassName RouterFunctionConfiguration  * @description 路由器函数配置  * @date created in 2018-06-07 22:33  * @modified by  */ @Configuration public class RouterFunctionConfiguration {  //    @Autowired //    private UserRespository userRepository;      @Bean     @Autowired     public RouterFunction<ServerResponse> personFindAll(UserRespository userRepository) {         return RouterFunctions.route(RequestPredicates.GET("/person/find/all"),                 request -> {                     Collection<User> users = userRepository.findAll();                     Flux<User> userFlux = Flux.fromIterable(users);                     Mono<ServerResponse> body = ServerResponse.ok().body(userFlux, User.class);                     return body;                 });     }  } 
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!