欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 财经 > 创投人物 > Spring源码解析

Spring源码解析

2025/3/18 7:54:04 来源:https://blog.csdn.net/sadsasdsdsdasda/article/details/146327279  浏览:    关键词: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());

接收事件

    @EventListenerpublic void res(User user){log.(user)}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词