天天看点

Webflux。持续更新。。。关联

文章目录

  • 关联
    • spring-security
      • 概念
      • 优势
      • DEMO
        • 函数式
      • 处理报错
        • 乱码
          • 中文乱码

关联

spring-security

概念

webflux非阻塞,反应式函数编程。

优势

  • 并发非阻塞
  • 函数式编程

DEMO

函数式

  • 路由配置
@Configuration
public class FlowRouteCfg {
private static String PREFIX = "/api";
    
    @Autowired
    FlowHandler flowHandler;
	@Bean
    public RouterFunction<ServerResponse> monoRouterFunction() {
        return route(GET(PREFIX + "/test").and(accept(MediaType.APPLICATION_JSON)), testHandler::test)
                .andRoute(GET(PREFIX + "/flow").and(accept(MediaType.APPLICATION_JSON)), flowHandler::count);// ::Route绑定函数 test指函数
    }
    }
           

访问地址:

ip:port/api/test

  • 处理器

    count

    方法对应Router中被绑定的函数:

    count

@Slf4j
@Component
public class FlowHandler {
	@PostConstruct
    public void init() {
        log.debug("处理器启动");
    }

    public Mono<ServerResponse> count(ServerRequest request) {
        Mono<ServerResponse> ret = null;
        try {
            log.debug("{}=={}", "MONO-headers", request.headers());
            // 处理请求 - start
            // 处理请求 - end
            // 界面输出字符串↓"Hello Spring!"
            ret = ok().contentType(TEXT_PLAIN)
                    .body(BodyInserters.fromObject("Hello Spring!"));
        } catch (Exception e) {
            ExceptionUtil.handle(e);
        }
        return ret;
    }
}
           
  • 依赖包

    Netty服务器

    启动,排除

    -tomcat

    依赖。
<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <version>${spring.boot.version}</version>
            <exclusions>
                <exclusion>
                    <artifactId>spring-boot-starter-tomcat</artifactId>
                    <groupId>org.springframework.boot</groupId>
                </exclusion>
            </exclusions>
        </dependency>
           

然后正常启动SpringBoot启动类。

访问地址:

ip:port/api/test

,得到响应。

处理报错

乱码

中文乱码

返回类型改为spring的

MediaType.APPLICATION_JSON

继续阅读