当前位置: 首页 > news >正文

Spring源码解析

第一讲 容器接口

BeanFactory和ApplicationContext接口的具体继承关系:

ApplicationContext 间接继承了BeanFactory

  • BeanFactory是父接口
  • ApplicationContext是子接口,里面一些功能调用了BeanFactory
BeanFactory的功能
  • 表面上只有 getBean(接口的方法)
  • 实际上控制反转、基本的依赖注入、直至bean的生命周期的各种功能,都由它的实现类来提供

他的实现类-DefaultListableBeanFactory

  • 父类:DefaultSingleletonBeanRegistry

BeanFactory的主要方法(看接口的主要方法ctrl+F12):

  • containsBean 根据bean的名字看容器中是否包含该对象
  • getAliases 根据bean的名字获取他的别名
  • getBean 根据name/type 获取该bean

管理所有单例对象

所有单例bean:singletonObjects

获取到所有单例bean

DefaultSingleletonBeanRegistry.class.get
ApplicationContext的扩展功能

ApplicationContext的扩展功能 ,主要来自 继承的四个接口

  • MessageSource 处理国际化资源能力
  • ResourcePayyernResolver 对通配符去匹配资源的能力
  • EnvironmentCapable 读取环境信息,比如读取 application.properties
  • ApplicationEventPublisher 发布事件对象
MessageSource 处理国际化资源能力
context.getMessage("hi",null, Locale.ENGLISH);
ResourcePayyernResolver 对通配符去匹配资源的能力
 //第二个接口 通配符classpath  jar包中classpath*:
context.getResource("classpath:hello.txt");
  • file: 磁盘路径
  • classpath: 相对路径
  • classpath*:也可以在jar包寻找
EnvironmentCapable 读取环境信息,比如读取 application.properties
//第三个信息 获取配置信息
//1、获取系统环境变量中的值
context.getEnvironment().getProperty("java_home");
//2、获取application.porperties
context.getEnvironment().getProperty("server.port");

ApplicationEventPublisher 发布事件对象
  //4、发送事件
context.publishEvent(new User());

接收事件

    @EventListener
    public void res(User user){
        log.(user)
    }
http://www.dtcms.com/a/73705.html

相关文章:

  • SpringBoot项目中JSON数据的存储与查询
  • 【网络协议】基于UDP的可靠协议:KCP
  • Xposed模块开发:运行时修改技术
  • 全星研发管理APQP软件系统:助力汽车零部件企业高效研发,打造核心竞争力
  • MyBatis XMLMapperBuilder 是如何解析 SQL 映射文件的? 它读取了哪些信息?
  • 用Python打造AI玩家:挑战2048,谁与争锋
  • Chat2DB:让数据库管理像聊天一样简单
  • csv文件格式和excel数据格式有什么区别
  • 解决linux mysql命令 bash: mysql: command not found 的方法
  • 【AVRCP】Notification PDUs 深入解析与应用
  • Ruby 字符串(String)
  • 关于软航OFFICE文档控件软件在Chrome 133版本上提示扩展已停用的原因及处理办法
  • 通过 SVG 使用 AI 生成理想图片:技术实现与实践指南
  • 【地图 Map】——8
  • 50个常用的DeepSeek提示词
  • ChatGPT-Next-Web开源项目V2.16.0最新版本NextChat容器部署安装教程
  • Model Context Protocol 的生命周期
  • VBA第二十七期 数据录入中验证格式有效性
  • http proxy的原理是什么
  • 深度剖析陶瓷防静电地板的特性优势
  • matlab图论分析之指标计算(二)
  • BUU SQL COURSE 1
  • C++11 lambda表达式、包装器、Bind绑定
  • 开关电源实战(三)FlyBack反激电源MAX668
  • 玻璃制品制造行业的现状 内检实验室LIMS在玻璃制品制造的应用
  • 前端实现页面截图 -- html2canvas
  • 学习笔记:黑马程序员JavaWeb开发教程(2025.3.17)
  • 前后端图像分类系统搭建文档
  • JavaScript语言的正则表达式
  • DC/DC开关电源学习笔记(十四)Buck-Boost升降压电路仿真与应用案例