《玩转Spring全家桶》第63-69节
第63节分布式环境中如何解决session的问题
常见的会话解决方案:
- 粘性会话 Sticky Session
- 会话复制 Session Replication
- 集中会话 Centralized Session
Spring提供了组件帮助实现集中会话
Spring Session - 简化集群中的用户会话管理
- 无需绑定容器特定解决方案
支持的存储 - Redis
- MongoDB
- JDBC
- Hazelcast
Spring Session实现原理——定制HttpSession - 通过定制的HttpservletRequest返回定制的HttpSession
- SessionRepositoryRequestWrapper
- SessionRepositoryFilter
- DelegatingFilterProxy
基于Redis的HttpSession
引入依赖 - Spring-session-data-redis
基本配置 - @EnableRedisHttpSession
- 提供RedisConnectionFactory
- 实现AbstractHttpSessionFactory
- 实现AbstractHttpSessionApplicationInitializer
- 配置DelegatingFilterProxy
第64-65使用WebFlux替代SpringMVC
什么事WebFlux?
- 用于构建基于Reactive技术栈之上的Web应用程序
- 基于Reactive Streams API,运行在非阻塞服务器上
为什么会有WebFlux? - 对于非阻塞Web应用的需要
- 函数时编程
关于WebFlux的性能 - 请求的耗时并不会有很大的改善
- 仅需少量固定数量的线程和较少的内存即可实现扩展
WebFlux VS WebMVC
WebFlux中的编程模型
两种编程模型
- 基于注解的控制器
- 函数时Endpoints
第67节 认识SpringBoot的组成部分
Spring Boot的四大核心特性
- 自动配置-Auto Congiguration
- 起步依赖-Starter Dependency
- 命令行界面-Spring Boot CLI
- Actuator
第68节了解自动配置的实现原理
自动配置
- 基于添加的JAR依赖自动对Spring Boot应用程序进行配置
- Spring-boot-autoconfiguration
- 开启自动配置
- EnableAutoConfiguration
- exclude = Class<?>[ ]
- @SpringBootApplication
第69节 动手实现自己的自动配置
主要内容:
编写java Config
- @Configuration
添加条件 - @Configuration
定位自动配置 - META-INF/spring.factories
条件注解大家庭
条件注解 - @Conditional
类条件 - @ConditionalOnClass
- @ConditionalOnMissingClass
属性条件 - @ConditionalOnProperty
Bean条件 - @ConditionalOnBean
- @ConditionalMissingBean
- @ConditionalOnSingleCandidate
资源条件 - @ConditionalOnResource