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

Spring容器的实现

BeanFactory的实现

BeanFactory的实现DefaultListableFactory根据Bean的定义(class, scope,初始化,销毁)来创建bean

创建Config类的BeanDefinition并注册

为什么只有config,而没有bean1、bean2?
因为现在的beanFactory缺失了解析@Configuration、@Bean注解的能力

如何完善功能?

给BeanFactory添加常用的后处理器

调用这些后处理器

通过类型来获取它们

拿到后逐一执行,从而实现功能的扩展

Spring中的BeanFactory的原始功能并没有那么完善的,它的扩展功能是由一些后处理器来完成的(补充了一些bean的定义)

把注册到beanFactory中的bean拿出来使用

依赖注入的功能没有,依赖注入也是一个扩展功能

这种叫做bean的后处理器

它是针对每个bean的生命周期的各个阶段,创建、依赖注入、初始化,提供一些扩展功能(@Autowired\@Resource)

获取他们逐一执行

建立bean过程与后处理器之间的联系

观察一下它的时机

刚开始只保存了一些描述信息在beanFactory中,当第一次用到它的时候才去创建,默认延迟初始化

除非:

预先创建好所有的bean对象

beanFactory只是提供一些基础功能,很多扩展功能都没实现

Autowired是根据成员变量的名字注入bean3。而Resource是根据设置注入bean4,如果两个都加了会注入谁呢?

这更后处理器的优先级有关,因为Autowired后处理器先被注入所以它的优先级高,不过这是可以改变

ApplicationContext的实现

基于XML配置的实现类
ClassPathXmlApplicationContext:从类路径下加载XML配置文件。
FileSystemXmlApplicationContext:从文件系统路径加载XML配置文件。
基于注解配置的实现类
AnnotationConfigApplicationContext:从Java配置类(使用@Configuration注解的类)加载配置。

@Configurationpublic class AppConfig {@Beanpublic MyBean myBean() {return new MyBean();}}
ApplicationContext context = new AnnotationConfigApplicationContext(AppConfig.class);

基于Web应用的实现类
XmlWebApplicationContext:专门为Web应用设计的ApplicationContext实现类,从Web应用的上下文中加载XML配置文件。
通常在web.xml中配置:

<context-param><param-name>contextConfigLocation</param-name><param-value>/WEB-INF/applicationContext.xml</param-value></context-param><listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener>

AnnotationConfigServletWebServerApplicationContext:专门为Web应用设计的ApplicationContext实现类,从Java配置类加载配置

http://www.dtcms.com/a/482629.html

相关文章:

  • JWT 漏洞全解析:从原理到实战
  • 基于Redis6.2.8版本部署Redis Cluster集群
  • 工控一体机在智慧称重食堂中的应用
  • 网络包封装全解析:从字节流到数据帧
  • Spring MVC入门补充2
  • 石家庄站列车时刻表美食网站二级页面模板
  • GS016电动工具调速控制电路
  • Gartner:AI增强软件测试工具魔力象限报告精编(2025年10月)
  • 绵阳公司商务网站制作沈阳企业网站制作公司
  • elasticsearch-8.12.2集群部署
  • 【教程】增强版 print 函数,支持彩色与样式化终端输出
  • Python下载实战技巧技术文章大纲
  • TCP 拆包现象解决方案(一)
  • 陕西省城乡建设学校网站网页设计图片加载不出来
  • 商业智能BI与业务结构分析
  • 视频融合平台EasyCVR助力构建智慧园区的“视觉中枢”与“智能引擎”
  • 基于python+Java的二手车与奔驰销量数据可视化平台
  • 网站返回顶部怎么做制作企业网站页面实训报告
  • 基于ArcGIS的作物适宜区分析案例 | 当GIS化身农科月老
  • 贵阳网站建设开发开发区二手房
  • SpringCloud中的网关(Gateway)的作用是什么?
  • 联想笔记本电脑Y7000P更换电池后引发CPU锁0.78GHz问题修复记录
  • 大良网站建设中国企业网控股有限公司
  • 德州 网站建设购物车 信息技术分院网站后台设计课题组
  • 用iis 匿名访问windows 上的sql server数据库
  • Eclipse MyEclipse MyEclipseCI 安装SVN插件及使用说明
  • 怎样自己做网络推广网站怎么上传网站数据库
  • DRW项目kaggle竞赛回归方案二
  • 微信小程序怎么做网站链接网站建设公司比较
  • 网站制作电话多少钱wordpress主题技术网