Spring 系列

2023-11-15

前面几篇文章我们聊过IOC以及Spring IOC ,其中Spring IOC 的一个实现方式包含 依赖查找 和依赖注入。本文我们进一步详细聊一下 SpringIOC的依赖查找,及其对应的方式 以及安全性,内置依赖等。
在这里插入图片描述

查找类型

1单一类型

  • 根据 Bean 名称查找
  • 根据 Bean 类型查找
  • 根据 Bean 名称 + 类型查找

2 集合类型依赖查找:如何查找已知类型多个Bean集合

getObjectType 提前把一些类进行初始化 导致Bean 初始化不完全,位置错误。
先根据名称查找更好。

ListableBean Factory 是针对于某一个类型去查找一个集合列表。集合列表可能有两种情况,1)查询这个bean的名称 2) 查询Bean 的实例

推荐使用Bean 的名称去判断这个Bean 是否存在。当然重要的方式是判断BeanDefinition 是否存在。这种方式会避免提早初始化Bean

3 层次性依赖查找

HierarchicalBeanFactory
与双亲委派非常相似,如果有层次性的话,就会一直往上递进查找,直到找到。

4 延迟依赖查找

  •  org.springframework.beans.factory.ObjectFactory
    
  •   org.springframework.beans.factory.ObjectProvider
    

上面我们讲到的是Spring 的几种查找方式,接下来我们从安全性 以及 内置依赖两个方面扩展一下

依赖查找安全性对比

在这里插入图片描述

内建可查找的依赖

  • AbstractApplicationContext 内建可查找的依赖
    在这里插入图片描述
  • 注解驱动 Spring 应用上下文内建可查找的依赖 等
    在这里插入图片描述

依赖查找中的经典异常

在这里插入图片描述

总结:本文记录SpringIOC依赖查找 依赖查找的几个方式,以及从安全性 以及内置依赖等方面来进一步了解 SpringIOC依赖查找。后续继续对Spring 进行进一步的介绍。

注:本文大部分取自于极客视频并进行加工。大家感兴趣的可以直接移步极客 看小马哥讲Spring核心编程思想~

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Spring 系列 的相关文章

  • Java:无法从同一包中的不同类访问静态变量

    这很奇怪 因为我有一个可以访问 Frame dimension getWidth 的 Character 类 及其伙伴 getHeight 但是当我想在 Map 类中使用它时 Eclipse 强调了它并且无法给我反馈 运行该程序最终会出现
  • 使用 GWT 读取非常大的本地 XML 文件

    我正在使用 GWT 构建我的第一个 Java 应用程序 它必须从一个非常大的 XML 文件中读取数据 当我尝试发送对文件中信息的请求时遇到问题 并且我不太确定它是否与文件的大小或我的语义有关 在我的程序中 我有以下内容 static fin
  • GWT - 如何组织项目以拥有多个网页以及它们之间的导航

    我是 GET 的新手 顺便说一句 它给我留下了深刻的印象 并且发现它对于像我这样熟悉 C NET 桌面技术并愿意编写 Web 应用程序的人来说非常有吸引力 我根据 GWT Eclipse 向导生成的示例启动了自己的项目 该项目生成带有面板的
  • Spring Data JPA 选择不同

    我有一个情况 我需要建立一个select distinct a address from Person a 其中地址是 Person 内的地址实体 类型的查询 我正在使用规范动态构建我的 where 子句并使用findAll Specifi
  • 身份验证在 Spring Boot 1.5.2 和 Oauth2 中不起作用

    我正在使用带有 spring boot 1 5 2 RELEASE 的 Oauth2 当我尝试重写 ResourceServerConfigurerAdapter 类的配置方法时 它给了我一个编译错误 但这在 Spring boot 1 2
  • org.hibernate.QueryException:无法解析属性:文件名

    我正在使用休眠Criteria从列中获取值filename在我的桌子上contaque recording log 但是当我得到结果时 它抛出异常 org hibernate QueryException 无法解析属性 文件名 com co
  • Integer.parseInt("0x1F60A") 以 NumberformatException 结束

    我尝试从数据库中获取长字符串内的表情符号代码 格式如下 0x1F60A 所以我可以访问代码 但它将是String 起初 我尝试通过执行以下操作来转换变量tv setText beforeEmo getEmijoByUnicode int e
  • 如何将 Mat (opencv) 转换为 INDArray (DL4J)?

    我希望任何人都可以帮助我解决这个任务 我正在处理一些图像分类并尝试将 OpenCv 3 2 0 和 DL4J 结合起来 我知道DL4J也包含Opencv 但我认为它没什么用 谁能帮我 如何转换成 INDArray 我尝试阅读一些问题here
  • 来自十六进制代码的 Apache POI XSSFColor

    我想将单元格的前景色设置为十六进制代码中的给定颜色 例如 当我尝试将其设置为红色时 style setFillForegroundColor new XSSFColor Color decode FF0000 getIndexed 无论我在
  • 自动生成Flyway的迁移SQL

    当通过 Java 代码添加新模型 字段等时 JPA Hibernate 的自动模式生成是否可以生成新的 Flyway 迁移 捕获自动生成的 SQL 并将其直接保存到新的 Flyway 迁移中 以供审查 编辑 提交到项目存储库 这将很有用 预
  • Java Swing For mac 中的 DJ Native Swing 浏览器

    我有一个用 Swing 制作的 Java 应用程序 并且使用了一个 DJ Native Swing 浏览器 当我尝试在 OS X 上使用它时 它抛出了一个NoClassDefFoundError尽管我添加了 swt jar 但始终如此 有人
  • 了解joda时间PeriodFormatter

    我以为我明白了 但显然我不明白 你能帮我通过这些单元测试吗 Test public void second assertEquals 00 00 01 OurDateTimeFormatter format 1000 Test public
  • 读取电子邮件的文本文件转换为 Javamail MimeMessage

    我有一个电子邮件原始来源的文本文件 直接从 gmail 复制 如果您单击 查看原始文件 您就会看到它 我想读入该文件并将其转换为 MimeMessage 如果您好奇为什么 我设置了 JavaMaildir 并且需要用电子邮件填充它的收件箱以
  • 如何在 Java 中创建接受多个值的单个注释

    我有一个名为 Retention RetentionPolicy SOURCE Target ElementType METHOD public interface JIRA The Key Bug number JIRA referenc
  • 返回 Java 8 中的通用函数接口

    我想写一种函数工厂 它应该是一个函数 以不同的策略作为参数调用一次 它应该返回一个函数 该函数根据参数选择其中一种策略 该参数将由谓词实现 嗯 最好看看condition3为了更好的理解 问题是 它没有编译 我认为因为编译器无法弄清楚函数式
  • JMenu 中的文本居中

    好吧 我一直在网上寻找有关此问题的帮助 但我尝试的任何方法似乎都不起作用 我想让所有菜单文本都集中在菜单按钮上 当我使用setHorizontalTextPosition JMenu CENTER 没有变化 事实上 无论我使用什么常量 菜单
  • “无法实例化活动”错误

    我的一个 Android 应用程序拥有大约 100 000 个用户 每周大约 10 次 我会通过 Google 的市场工具向我报告以下异常情况 java lang RuntimeException Unable to instantiate
  • Java Swing:需要一个高质量的带有复选框的开发 JTree

    我一直在寻找一个 Tree 实现 其中包含复选框 其中 当您选择一个节点时 树中的所有后继节点都会被自动选择 当您取消选择一个节点时 树中其所有后继节点都会自动取消选择 当已经选择了父节点 并且从其后继之一中删除了选择时 节点颜色将发生变化
  • 使用按钮作为列表的渲染器

    我想使用一个更复杂的渲染器 其中包含列表的多个组件 更准确地说 类似于this https stackoverflow com questions 10840498 java swing 1 6 textinput like firefox
  • Spring表单ModelAttribute字段验证避免400 Bad Request错误

    我有一个ArticleFormModel包含正常发送的数据html form由 Spring 使用注入 ModelAttribute注释 即 RequestMapping value edit method RequestMethod PO

随机推荐

  • localhost 已拒绝连接。

    Tomcat的localhost 8080拒绝访问 直接在tomcat的bin目录下双击startup bat 启动就好了 再访问localhost 8080就可以出来了
  • 坑爹公司大盘点 --- 转自拉钩

    那些年我们满怀憧憬迈入社会 却遭遇了理想与现实的碰撞 一起看看网上盘点的坑爹公司吧 遇到这样的公司真的是醉了 gt 转自拉钩 1 头衔公司 从入职第一天 就封你为大中华区销售总监 或者全球发行战略副总裁 全国市场委员会主席 然后没有手下 没
  • 如何有效保证Java代码单元测试覆盖率

    背景介绍 我们在实际项目开发过程中 不同level的童鞋由于专业技能的层次不同 导致在参与实际开发的业务代码中经常会出现各种bug 项目管理中好的pm或许会给充足的时间来让开发童鞋们定位修复这些bug 也有各种客观原因的PM不会在项目中预留
  • Spring Boot使用方法

    Spring Boot 七步走 1 勾选包 Spring Boot是自带TomCat的 创建Spring Boot工程文件 创建时需要更改资源下载地址 我选择阿里云的这个地址 而且Spring Boot不需要导包 只需要勾选需要的包 进入后
  • 深度学习基础:SVD奇异值分解及其意义【转】

    排版较好的一版 http shartoo github io SVD decomponent 上面的补充 奇异值的物理意义是什么 https www zhihu com question 22237507 answer 225371236
  • 使用 ELK 收集日志

    在当前分布式 微服务架构下 各个应用都部署在不同的服务器上 每个应用都在记录着自己重要或者不重要的日志信息 当我们要通过日志信息来排查错误时 可以根据出错应用在对应的机器上找报错相关的日志信息 但是 可能我们不具有相应服务器的访问权限 也可
  • 初学者入门:认识STM32单片机

    本教程含有较多专业词汇 大部分时候 不完全理解并不影响继续往下阅读 大家只需要了解大致的概念即可 当然 也鼓励大家多查百度和多问chatgpt 让自己学会的更多 什么是单片机 单片机 就是把中央处理器CPU 存储器 等计算机的功能部件 和定
  • C语言进阶:文件操作,学生信息管理系统

    文章目录 1 重定向 2 读文件和写文件 3 打开文件和关闭文件 4 综合大题 学生信息管理系统 5 二进制读文件和二进制写文件 6 文件定位 7 其他文件操作函数 8 系统再优化之用户登录与注册 1 重定向 重定向文件输出 把运行出来的内
  • WSL子系统启动报错 Wsl/Service/CreateInstance/CreateVm/HCS_E_SERVICE_NOT_AVAILABLE

    今天琢磨着WindowsLinux子系统研究研究新东西 结果当我启动WSL时却出现了下面的提示 WSL启动报错 由于未安装所需的特性 无法启动操作 Error code Wsl Service CreateInstance CreateVm
  • url pattern中/与/*的区别

  • 爬虫入门级(五)

    Python爬虫入门级 五 实现两个小案例 1 gt 爬取豆瓣电影的TOP250 2 gt 爬取电影的资源下载地址 爬取豆瓣电影的TOP250 1 分页爬取数据 2 csv数据加载到本地 抓取豆瓣电影排行 1 判断页面元代满是否有数据 2
  • Postman 发送GET请求传递List自定义对象参数举例

    这是一个GET请求 后端接收方式 用List
  • 微服务简介

    微服务简介 微服务架构是一种软件架构模式 它将一个大型应用程序拆分为一组小型 独立的服务 每个服务都有自己的业务逻辑和数据存储 这些服务可以独立开发 部署和扩展 通常使用HTTP或其他轻量级通信协议进行通信 以下是微服务架构的一些关键特点和
  • android基础知识题,史上最全的Android面试题集锦

    Android基本知识点 1 常规知识点 1 Android类加载器 在Android开发中 不管是插件化还是组件化 都是基于Android系统的类加载器ClassLoader来设计的 只不过Android平台上虚拟机运行的是Dex字节码
  • 找不到该项目(无法删除文件)

    win10桌面新建文件提示 找不到该项目 该项目不在C users 中 请确认该项目的位置 然后重试 的原因是系统错误导致的 具体解决方法步骤如下 1 首先新建一个txt文件 为了方便txt文件建在跟目标文件供一个目录下 2 然后把下面代码
  • 学习lava源码时遇到的python知识

    内置函数 参考 https docs python org 3 7 library functions html Built in Functions abs delattr hash memoryview all dict help mi
  • MVC 模式与三层架构

  • Pr批量字幕制作

    一 标题字幕 1 选择文件 新建 旧版标题 2 根据所需设置一下 视频属性的高宽 是根据自己视频情况而定 一般新建的时候 就会根据自己导入的视频而显示 无需再设置 3 添加文字后 根据自己所需设置所需字幕 钢笔工具可以设置字幕移动 滚动字幕
  • 第十三届蓝桥杯大赛软件组省赛 Python大学A组 个人题解

    Link 文章目录 Python大学A组 个人题解 试题 A 裁纸刀 思路 代码 试题 B 寻找整数 思路 代码 试题 C 质因数个数 思路 代码 试题 D 矩形拼接 思路 代码 试题 F 重新排序 思路 代码 试题 G 全排列的价值 思路
  • Spring 系列

    前面几篇文章我们聊过IOC以及Spring IOC 其中Spring IOC 的一个实现方式包含 依赖查找 和依赖注入 本文我们进一步详细聊一下 SpringIOC的依赖查找 及其对应的方式 以及安全性 内置依赖等 查找类型 1单一类型 根