webflux 源码 初始化(一)

本文主要探讨了Spring Boot WebFlux的初始化流程,包括依赖与启动、基于Spring Boot的初始化、扫描路由与Handler Method映射、内嵌容器的启用以及HTTP协议处理。通过对WebFluxAutoConfiguration、WebFluxConfigurationSupport、DispatcherHandler等关键组件的分析,揭示了WebFlux如何建立路由和处理请求。
摘要由CSDN通过智能技术生成

1.简价

webflux

依赖及启动

	<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>
	</dependencies>

启动

@SpringBootApplication
@RestController
public class FluxWebApplication {
	public static void main(String[] args) {
		SpringApplication.run(FluxWebApplication.class, args);
	}
	@GetMapping("hello")
	public String hello(){
		return"hello";
	}
	@GetMapping("hello2")
	public Mono<String> hello2(){
		return Mono.just("hello2");
	}
	@GetMapping("hello3")
	public Flux<String> hello3(){
		String[] str = {"123","abc"};
		return Flux.fromArray(str).filter(s -> "123".equals(s));
	}
}

基于spring-boot的初始化

WebFluxAutoConfiguration

@Configuration
@ConditionalOnWebApplication(type = ConditionalOnWebApplication.Type.REACTIVE)
@ConditionalOnClass(WebFluxConfigurer.class)
//定义初始化requestmapper请求处理(fluxweb主配置)
@ConditionalOnMissingBean({ WebFluxConfigurationSupport.class })
//服务容器配置/序列化/反序列化/参数校验
@AutoConfigureAfter({ ReactiveWebServerFactoryAutoConfiguration.class,
		CodecsAutoConfiguration.class, ValidationAutoConfiguration.class })
@AutoConfigureOrder(Ordered.HIGHEST_PRECEDENCE + 10)
public class WebFluxAutoConfiguration {

	//略去一些代码

	//下面fluxweb基础配置初始,包含 beanfactory,view转换器,请求参数处器等
	//这块其实跟springmvc类似
	@Configuration
	@EnableConfigurationProperties({ ResourceProperties.class, WebFluxProperties.class })
	@Import({ EnableWebFluxConfiguration.class })
	public static class WebFluxConfig implements WebFluxConfigurer {

		private final ResourceProperties resourceProperties;

		private final WebFluxProperties webFluxProperties;

		private final ListableBeanFactory beanFactory;
		//方法参数处理器
		private final List<HandlerMethodArgumentResolver> argumentResolvers;
		//处定义http编解码器
		private final List<CodecCustomizer> codecCustomizers;

		private final ResourceHandlerRegistrationCustomizer resourceHandlerRegistrationCustomizer;
		//视图转换器
		private final List<ViewResolver> viewResolvers;
		//略去一些代码

	}
    //略去一些代码
}

fluxweb主配置
WebFluxConfigurationSupport
在这里插入图片描述

/**
 * The main class for Spring WebFlux configuration.
 * <p>Import directly or extend and override protected methods to customize.
 */
public class WebFluxConfigurationSupport implements ApplicationContextAware {
    //跨域配置列表
	@Nullable
	private Map<String, CorsConfiguration> corsConfigurations;
	//请求路径匹配配置器
	@Nullable
	private PathMatchConfigurer pathMatchConfigurer;
    //视图转器注册器
	
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值