框架设计
框架6大模块
Spring协作模式
- 降低复杂度
- 更好的分工协作
AOP
AOP
- 面向切面编程
- 管理对象生命周期与对象装配
- 实现原理是加一个中间层代理(字节码增强)来实现所有对象的托管
- 接口类型
- 默认使用JDKProxy
- 如果也想用CGlib要配置 proxy-target-class=true
- 字节码增强新工具ByteBuddy提供了更友好的API
IoC
- DI(DependencyInjection)依赖注入
- 从对象A直接引用对象B,变成对象A只需要依赖一个接口IB,系统启动和装配阶段把IB接口的实例对象注入到A,A不再直接依赖具体B,从而可以实现在不修改代码的情况下,只需要修改配置文件,即可实现功能迭代
优势
打破循环依赖
- 提取到父类处理
- 结束掉其中的一环
-
Bean
Bean工厂到应用上下文
-
加载过程


-
XML配置
配置原理
xml中编写自定义标签,ns,xsd
- schemaLocation
- xsd定义在spring.schemas文件,里面对应了classpath下的xsd文件,xsd文件定义检查XML配置是否正确
- ns定义在spring.handlers文件,里面对应了其handler类,此类可以从DOM节点parse对象
- 最终形成Bean
自动化XML配置工具
- Spring-xbean
- Spring封装了apache的XmlBeans工具
- 此工具就是做XML和Beans的转换
2个原理
由相互依赖的RPC转向只依赖MQ
- 由同步调用转向异步调用
JMS
- Java Message Service Java消息服务
- 生产者/消费者的点对点模式
- 发布/订阅的一对多模式
SpringBoot
Boot基础
- 把原来的非限定性框架整合为限定性框架
- 基于约定大于配置、配置驱动
- 整合了Spring生态,把各方面成熟的组件整合起来
-
功能特性
创建独立运行的Spring应用
- 直接嵌入Tomcat或Jetty,无需部署WAR包
- 提供限定性的starter依赖简化配置
- 必要时自动配置Spring和第三方依赖库
- 提供生产production-ready特性:指标度量、健康检查、外部配置等
-
核心原理
自动化配置
简化配置的核心就是自动化配置
- 基于Condition、Configuration、EnableXX
通过application.yaml生成Configuration,通过自动配置生成Bean
SpringBootStarter
脚手架核心
- 整合各种第三方类库,协同工具
- 通过约定的前缀,生成一组配置,通过自动配置生成starter组件

