文章目录
- 关联
-
- 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
- 处理器
方法对应Router中被绑定的函数:count
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