Spring

发布于:2024-04-21 ⋅ 阅读:(159) ⋅ 点赞:(0)

面向对象设计原则

  1. 开闭原则
    1. 里氏替换
    2. 合成复用
  2. 单一职责
  3. 依赖倒置
    1. 接口隔离
    2. 德米特法则

设计模式

创建型

单例
原型
工厂方法
抽象工厂
构建/生成器

结构型

cb ff
适配器
装饰
代理
桥接
组合
门面/外观
享元/轻量级

行为型

cims otv
责任链
命令
*迭代器
*解释器
中介者
备忘录
状态
策略
观察者
模版方法
访问者

核心注解自查

@Bean 容器注册组件
@Primary 主注解
@DependsOn 组件之间声明依赖关系
@Lazy 第一次使用时才创建
@Scope 声明组件的作用范围 (原型/单例)
@Configuration 识别为配置类, 替换以前的配置文件
@Componenet 组件
@Indexed 加速注解, 所有标记了的组件, 会直接启动快速加载
@Order 数字越小优先级越高
@ComponentScan 包扫描
@Conditional 条件注入
@Import 导入第三方 jar 包中的组件 或 定制批量导入组件逻辑
@ImportResource 导入以前的 xml 配置文件, 让其生效
@Profile 基于多环境激活
@PropertySource 外部 properties 配置文件和 JavaBean 进行绑定. 结合 ConfigurationProperties
@PropertySources 对 @PropertySource 组合
@Autowired 自动装配
@Qualifiler 精确指定
@Value 取值, 计算机环境变量, JVM 系统, 配置文件 @Value("${key.key:default}") #号可以对象调方法. etc.
@Lookup 单例组件依赖非单例组件, 非单例组件获取需要使用方法

@Indexed 注解需要引入依赖: org.springframework:spring-context-indexer (optional)

概览

_Resources > ResourceLoader

BeanDefinitionReader > AnnotatedBeanDefinitionReader / XmlBeanDefinitionReader

BeanDefinition 图纸 > BeanDefinitionMap

生命周期, 后置处理 (功能增强) 流水线车间 > 按照图纸造 (自动装配, AOP, 事务, web, 整合)

车间 > singletonObjects 单例对象池 registeredSingletons 已注册的单例池 singletonFactories 单例工厂池 earlySingletonObjects 临时对象池

核心组件接口分析

  • 基础接口

Resource + ResourceLoader 要转换的内容
BeanFactory 工作入口
BeanDefinition 转换后的内容
BeanDefinitionReader 读取器
BeanDefinitionRegistry 档案馆
ApplicationContext
Aware

  • 生命周期-后置处理器

BeanFactoryPostProcessor
InitializingBean
BeanPostProcessor

Resource

ContextResource - Web
HttpResource - 外部
WritableResource - 读写
网络, 磁盘

ResourceLoader

ResourceLoader 使用策略模式, 作为环境类

环境类 持有策略
资源加载 抽象策略
资源加载 策略实现

file:
classpath:
WEB-INF

BeanFactory

Spring 工厂

BeanFactory 是一个根接口 for 访问 Spring bean 容器, 保存很多的 BeanDefinition 信息, 每个信息都有一个唯一的名字

ListableBeanFactory
HierarchicalBeanFactory (定义父子工厂 (父子容器))

AbstractBeanFactory
- ResourcePatternResolver 策略模式的环境类 (构造器赋值)

GenericApplicationContext (组合了 DefaultListableBeanFactory )

  • DefaultListableBeanFactory
    • Map<String, Reference<DefaultListableBeanFactory>> 组合模式
    • beanDefinitionNames 保存所有 BeanDefinition 的名字
    • singletonBeanNamesByType 按照类型得到组件的一个底层池
    • allBeanNamesByType 按照类型得到所有 Bean name
    • beanDefinitionMap 存放 Bean 定义信息的 按名字对应关系 的集合 (档案馆)
    • resolvableDependencies

AnnotationConfigApplicationContext
ClassPathXmlApplicationContext


网站公告

今日签到

点亮在社区的每一天
去签到