spring framework 容器

news2024/12/25 9:10:14

org.springframework.beans 和 org.springframework.context 包是 Spring Framework 的 IoC 容器的基础。
这里需掌握两个体系结构,BeanFactory 和 ApplicationContext。
在这里插入图片描述
BeanFactory 主要接口,可分为三级:

  1. BeanFactory 是顶层容器,定义了所有 IoC 容器 必须遵从的原则,定义 获取 bean 及 bean 的provider、类型、别名等信息 ;
  2. 有3个子接口继承了它,进行不同功能上的增强,为二级接口;
  • HierarchicalBeanFactory:父子层次容器,增加了对 parentFactory 的 支持
  • AutowireCapableBeanFactory:自动装配bean容器,提供创建 bean、自动注入、初始化以及应用 bean 的后处理器,为第三方框架赋能
  • ListableBeanFactory:可枚举bean容器,根据各种条件获取 bean 的配置清单
  1. 三级接口是对二级接口的综合
  • ConfigurableBeanFactory:复杂配置的容器,提供配置 Factory 的各种方法
  • ConfigurableListableBeanFactory:完整功能的容器

BeanFactory 主要实现类:

  • AbstractBeanFactory:抽象工厂类,主要提供了这样的三个功能: 别名管理,单例创建与注册,工厂方法FactoryBean支持;
  • AbstractAutowireCapableBeanFactory:抽象工厂类,主要功能是bean的创建;
  • DefaultListableBeanFactory:具备全部功能的BeanFactory的默认实现,AbstractApplicationContext#refresh()方法中创建的容器类型。

BeanFactory 相关接口和实现类:

  • SingletonBeanRegistry:定义对单例的注册及获取
  • AliasRegistrγ:定义对 alias 的简单增删改等操作
  • BeanDefinitionRegistry:定义对 BeanDefinition 的各种增删改操作
  • SimpleAliasRegistry:主要使用 map 作为 alias 的缓存,并对接口 AliasRegistry 进行 实现
  • DefauItSingletonBeanRegistry:对接口 SingletonBeanRegistry各函数的实现
  • FactoryBeanRegistrySupport:在 DefaultSingletonBeanRegistry 基础上增加了对 FactoryBean 的特殊处理功能

在上述内容中,涉及的知识点主要有:bean的加载过程(生命周期),自动装配,bean的循环依赖(三级缓存),BeanFactory和FactoryBean的区别。
在这里插入图片描述
ApplicationContext 主要接口,可分为二级:

  1. 一级接口:ApplicationContext
  • EnvironmentCapable:可配置Environment
  • ListableBeanFactory:前面有介绍:可将Bean逐一列出的工厂
  • HierarchicalBeanFactory:前面有介绍:分层的工厂
  • MessageSource:可管理message实现国际化等功能
  • ApplicationEventPublisher:可publish事件,调用Listener
  • ResourcePatternResolver:加载pattern指定的资源
  1. 二级接口:WebApplicationContext、ConfigurableApplicationContext
  • WebApplicationContext:web环境的Context
  • ConfigurableApplicationContext:可配置的应用上下文

二级接口抽象实现类:

  1. AbstractApplicationContext:实现了该接口的大部分功能;
  2. AbstractRefreshableApplicationContext和GenericApplicationContext
  • GenericApplicationContext 通用的应用上下文(请注意:它已经不是抽象类,可以直接使用了)
  • AbstractRefreshableApplicationContext:实现了父类的方法refreshBeanFactory(),执行BeanFactory的“刷新”。
  1. AbstractRefreshableConfigApplicationContext:这里它有两个比较典型的实现类:
  • FileSystemXmlApplicationContext:taking the context definition files from the file system or from URLs
  • ClassPathXmlApplicationContext:taking the context definition files from the class path
  1. 三级接口:ConfigurableWebApplicationContext
    并没有定义太多的操作,主要是Servlet上下文及配置文件。
    抽象实现类:AbstractRefreshableWebApplicationContext
    实现类:
    • XmlWebApplicationContext
    • GroovyWebApplicationContext
    • AnnotationConfigWebApplicationContext

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/83482.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Nacos 配置中心之主动拉取

客户端 客户端的配置有两种方式来维持,一是客户端主动拉取,而是客户端长轮询更新 配置文件的种类 1、本地配置文件: 本地就已经存在的配置文件 2、 本地缓存文件: 从服务端获取的保存在了本地 (本地生成了文件) 3、 cacheData 缓存数据: 内存中缓存的配置文件数据 客户端主动获…

【分享】学浪PC端登录分析及实现

本文所有教程及源码、软件仅为技术研究。不涉及计算机信息系统功能的删除、修改、增加、干扰,更不会影响计算机信息系统的正常运行。不得将代码用于非法用途,如侵立删!学浪PC端登录分析及实现 环境 win10Fiddlerchrome学浪PC端登录:aHR0cHM6Ly9zdHVkZW50LWFwaS5peWluY2Fpc2…

AE 动效制作和交付方案

在界面设计中,设计师利用动效让整个界面更加活泼,给界面元素带来生命力,解决功能上的问题,在更好地展示产品功能的基础上,凸显品牌的特色。而作为用户,动效增强了体验者的审美感受、情感需要,让…

德才论

目录 1015:德才论 输入格式: 输出格式: 输入样例: 输出样例: 思路: 1.技巧: 1.2结构体代码: 2.分类: 1.德才分类 1.2德才分类代码: 2.cmp函数 2.1 cmp函数代码: 3.超时问题(易错,算法要优化) 总代码…

神经网络优化

提升深度神经网络:超参数调节,正则化,优化 之前已经学习了如何构建神经网络,本章将继续学习如何有效运行神经网络,内容涉及超参数调优,如何构建数据以及如何确保优化算法快速运行,从而使学习算…

LVM卷在线扩容报错:resize would cause inodes_count overflow

一、问题描述 某次在线环境&#xff0c;存储使用率告警在线扩容时&#xff0c;文件系统扩容失败&#xff0c;报错如下&#xff1a; Size of logical volume sihua/video changed from <162.00 TiB (42467321 extents) to <258.00 TiB (67633142 extents).Logical volu…

[附源码]计算机毕业设计付费自习室管理小程序Springboot程序

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; Springboot mybatis MavenVue等等组成&#xff0c;B/S模式…

【JDBC上篇】什么是JDBC

文章目录1、对JDBC本质的理解2、代码模拟JDBC的本质3、JDBC编程的六步4、通过类加载的方式注册驱动5、属性配置文件与JDBC6、处理查询结果集1、对JDBC本质的理解 Java DataBase Connectivity&#xff08;Java语言连接数据库&#xff09;&#xff0c;其本质是SUN公司指定的一套…

CSP22.3 T4通信系统管理

之前在CCF CSP认证2022年3月完整题解这篇博客记录了自己花了两天时间乱搞出来的方法&#xff0c;但是实际上动态维护区间最值&#xff0c;通过setsetset实现会更简洁&#xff0c;用优先队列需要额外开数组记录堆中节点的有效性。 而且在处理额度失效上&#xff0c;我也使用了最…

教你用响应式建站平台搭建网站

响应式网站搭建大家知道是什么吗&#xff1f;我们可以经常听到PC端网站、移动端网站&#xff0c;这些就是为特定终端而制作的网站版本&#xff0c;而响应式网站就是一个网站能够兼容多个终端&#xff0c;而不是为每个终端做一个特定的版本。那么我们怎么用响应式建站平台搭建网…

基于极限学习机(ELM)进行多变量用电量预测(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️❤️&#x1f4a5;&#x1f4a5;&#x1f4a5; &#x1f389;作者研究&#xff1a;&#x1f3c5;&#x1f3c5;&#x1f3c5;本科计算机专业&#xff0c;研究生电气学硕…

使用adb命令导出hprof文件

我们可以使用android studio profiler导入hprof文件分析android应用的内存问题。那么如何从手机上面导出这份文件呢&#xff1f; 把应用的heap 区的数据取出来保存在一个hprof文件上&#xff0c;然后把hprof文件导入到可以查看这个文件的工具上&#xff08;如android studio p…

Spring Security总结

目录 介绍 项目搭建 Security认证 UserDetailsService 内存认证 数据库认证 PasswordEncoder密码解析器 自定义登录页面 退出登录 CSRF防护 Remember me Security授权 RBAC 权限表设计 查询访问权限 配置类设置访问权限 自定义访问控制逻辑 注解设置访问权限 Secured Pre…

29.前端笔记-HTML-Html5的新特性

目录1、HtML5新增的语义化标签2、HTML5新增的多媒体标签&#xff08;1&#xff09;音频标签&#xff1a;< audio>audio的常见属性&#xff08;2&#xff09;视频标签&#xff1a;< video>video常见属性3、新增表单元素input的类型type4、新增表单属性1、HtML5新增的…

R语言中的生存分析Survival analysis晚期肺癌患者4例

第1部分&#xff1a;生存分析简介 最近我们被客户要求撰写关于生存分析的研究报告&#xff0c;包括一些图形和统计输出。本演示文稿将介绍生存分析 &#xff0c;参考&#xff1a; Clark, T., Bradburn, M., Love, S., & Altman, D. (2003). Survival analysis part I: Ba…

06 数学软件与建模---拟合

一、知识储备 1.曲线拟合问题的提法 已知一组&#xff08;二维&#xff09;数据&#xff0c;即平面上 n个点&#xff08;xi,yi) i1,…,n, 寻求一个函数&#xff08;曲线&#xff09;yf(x), 使 f(x) 在某种准则下与所有数据点最为接近&#xff0c;即曲线拟合得最好&#xff0…

前后端分离项目-Springboot 【后端框架搭建,SSM】

1.创建新项目 点击File->New->Project 选择Spring Initializr 填写信息 修改Group修改Artifact修改管理类型Maven&#xff08;带有文件目录&#xff09;修改Java version 选择依赖 这里只需要选择Web->Spring Web即可 创建的文件目录如下 2.创建文件目录 controlle…

【深入浅出Spring原理及实战】「原理分析专题」从零开始教你SpringEL表达式使用和功能分析讲解指南(上篇)

Spring EL表达式语言,这种语言jsp中学到的el,但是在整个spring之中其表达式语言要更加的复杂,而且支持度更加的广泛,最重要的是他可以进行方法的调用,对象的实例化,集合操作等等,但是唯一的难点就是:代码太复杂了,表达式太复杂了。深刻领会,spring中针对于字符串的改进,程序员使…

基于jsp+mysql+ssm医院出车管理与绩效分配系统-计算机毕业设计

项目介绍 本毕业设计主要实现集人性化、高效率、便捷等优点于一身的出车管理系统与绩效分配系统&#xff0c;完成系统用户管理、车辆信息管理、调度员信息管理、驾驶员信息管理、救护员信息管理、科室人员管理、院领导信息管理、调度信息管理、出车统计等功能模块。系统通过浏…

Spring Cloud微服务之loadbalancer负载平衡

Spring Cloud微服务之loadbalancer负载平衡 小学时候&#xff0c;曾经做过这样的数学题。 说有一个水池子&#xff0c;上面有一个排水管&#xff0c;下面有一个进水管&#xff0c;开一个进水管&#xff0c;6个小时灌满水池&#xff0c;开一个排水管&#xff0c;10个小时放光整…