Spring AutowireCapableBeanFactory

2023-11-12

Spring AutowireCapableBeanFactory接口的使用小结:


Spring的ioc容器中有一个接口叫AutowireCapableBeanFactory,我们从名字中可以看出,具有自动装配Bean的能力。

而且这里笔者先透露下,不是所有的Bean都是被Spring容器所管理的。

但是,出于某些需求,不在Spring容器中的某些bean也希望能够引用Spring容器里的bean。

平时我们的做法可以是一个在Spring容器里的类,实现一个ApplicationContextAware接口获取ApplicationContext接口上下文对象,通过getBean的方式,获取到Spring容器里的bean。

今天我们换一种方法。就是今天要说的。AutowireCapableBeanFactory接口。


ApplicationContext上下文可以通过

getAutowireCapableBeanFactory()
方法暴露给程序员AutowireCapableBeanFactory接口的实现类。

我们通过一个实际的可运行的例子来给读者一个直观的感受吧

package com.by.application.uc.account.service.impl;

import com.by.application.uc.account.service.CzService;
import org.springframework.beans.factory.config.AutowireCapableBeanFactory;

import javax.annotation.Resource;

public class Hello {

    @Resource
    private CzService czService;

    public void sayHello(AutowireCapableBeanFactory autowireCapableBeanFactory , CzService beanInSpringContainer) {
        if (null != autowireCapableBeanFactory) {
            autowireCapableBeanFactory.autowireBeanProperties(this, AutowireCapableBeanFactory.AUTOWIRE_BY_TYPE, false);

            System.out.println(czService == beanInSpringContainer);
            System.out.println(czService.getClass().getName());
            System.out.println(beanInSpringContainer.getClass().getName());

            System.out.println("查看下是否自动装配" + czService);

        }
    }

}

我们可以看到类Hello不在Spring容器里面,但是却使用了@Resource注解注入SpringBean。

如果sayHello()方法不是如下实现,就会报空指针了。

 autowireCapableBeanFactory.autowireBeanProperties(this, AutowireCapableBeanFactory.AUTOWIRE_BY_TYPE, false);
运行下,可以发现,实现了我们的目的。


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

Spring AutowireCapableBeanFactory 的相关文章

  • 时间序列中的峰值检测

    我目前正在开展一个小项目 我想在其中比较两个时间序列 相似性度量确实很模糊 如果两个时间序列大致具有相同的形状 则它们被认为是相似的 所以我心想 如果它们只需要具有相同的形状 我只需比较两个时间序列的峰值 如果峰值位于相同的位置 那么时间序
  • Java:用于确定等效性的外部类?

    Java 有一个Comparator
  • “实际或正式的参数列表长度不同”

    当我尝试将某些内容放入 括号中时Friends f new Friends friendsName friendsAge 它出现错误 Friends 类中的构造函数 Friends 不能应用于给定类型 必需 无参数 发现 字符串 整数 原因
  • PESSIMISTIC_WRITE 是否锁定整个表?

    只是为了确保我正确理解事情是如何运作的 If I do em lock employee LockModeType PESSIMISTIC WRITE 它会仅阻止该实体吗 employee 或整个表Employees 如果重要的话 我正在谈
  • Java Swing:从 JOptionPane 获取文本值

    我想创建一个用于 POS 系统的新窗口 用户输入的是客户拥有的金额 并且窗口必须显示兑换金额 我是新来的JOptionPane功能 我一直在使用JAVAFX并且它是不同的 这是我的代码 public static void main Str
  • Java - 将节点添加到列表的末尾?

    这是我所拥有的 public class Node Object data Node next Node Object data Node next this data data this next next public Object g
  • Java JDBC:更改表

    我希望对此表进行以下修改 添加 状态列 varchar 20 日期列 时间戳 我不确定该怎么做 String createTable Create table aircraft aircraftNumber int airLineCompa
  • 如何找到给定字符串的最长重复子串

    我是java新手 我被分配寻找字符串的最长子字符串 我在网上研究 似乎解决这个问题的好方法是实现后缀树 请告诉我如何做到这一点或者您是否有任何其他解决方案 请记住 这应该是在 Java 知识水平较低的情况下完成的 提前致谢 附 测试仪字符串
  • 使用 Android 发送 HTTP Post 请求

    我一直在尝试从 SO 和其他网站上的大量示例中学习 但我无法弄清楚为什么我编写的示例不起作用 我正在构建一个小型概念验证应用程序 它可以识别语音并将其 文本 作为 POST 请求发送到 node js 服务器 我已确认语音识别有效 并且服务
  • 在 HTTPResponse Android 中跟踪重定向

    我需要遵循 HTTPost 给我的重定向 当我发出 HTTP post 并尝试读取响应时 我得到重定向页面 html 我怎样才能解决这个问题 代码 public void parseDoc final HttpParams params n
  • Android MediaExtractor seek() 对 MP3 音频文件的准确性

    我在使用 Android 时无法在eek 上获得合理的准确度MediaExtractor 对于某些文件 例如this one http www archive org download emma solo librivox emma 01
  • 多个 Maven 配置文件激活多个 Spring 配置文件

    我想在 Maven 中构建一个环境 在其中我想根据哪些 Maven 配置文件处于活动状态来累积激活多个 spring 配置文件 目前我的 pom xml 的相关部分如下所示
  • 加速代码 - 3D 数组

    我正在尝试提高我编写的一些代码的速度 我想知道从 3d 整数数组访问数据的效率如何 我有一个数组 int cube new int 10 10 10 我用价值观填充其中 然后我访问这些值数千次 我想知道 由于理论上所有 3d 数组都存储在内
  • 反射找不到对象子类型

    我试图通过使用反射来获取包中的所有类 当我使用具体类的代码 本例中为 A 时 它可以工作并打印子类信息 B 扩展 A 因此它打印 B 信息 但是当我将它与对象类一起使用时 它不起作用 我该如何修复它 这段代码的工作原理 Reflection
  • Spring Data JPA 应用排序、分页以及 where 子句

    我目前正在使用 Spring JPA 并利用此处所述的排序和分页 如何通过Spring data JPA通过排序和可分页查询数据 https stackoverflow com questions 10527124 how to query
  • Mockito when().thenReturn 不必要地调用该方法

    我正在研究继承的代码 我编写了一个应该捕获 NullPointerException 的测试 因为它试图从 null 对象调用方法 Test expected NullPointerException class public void c
  • 无法解析插件 Java Spring

    我正在使用 IntelliJ IDEA 并且我尝试通过 maven 安装依赖项 但它给了我这些错误 Cannot resolve plugin org apache maven plugins maven clean plugin 3 0
  • 十进制到八进制的转换[重复]

    这个问题在这里已经有答案了 可能的重复 十进制转换错误 https stackoverflow com questions 13142977 decimal conversion error 我正在为一个类编写一个程序 并且在计算如何将八进
  • JRE 系统库 [WebSphere v6.1 JRE](未绑定)

    将项目导入 Eclipse 后 我的构建路径中出现以下错误 JRE System Library WebSphere v6 1 JRE unbound 谁知道怎么修它 右键单击项目 特性 gt Java 构建路径 gt 图书馆 gt JRE
  • getResourceAsStream() 可以找到 jar 文件之外的文件吗?

    我正在开发一个应用程序 该应用程序使用一个加载配置文件的库 InputStream in getClass getResourceAsStream resource 然后我的应用程序打包在一个 jar文件 如果resource是在里面 ja

随机推荐

  • 解决flex布局弹性布局使用justify-content:space-between后最后一行多个元素排版问题

    解决flex布局弹性布局使用justify content space between后最后一行多个元素排版问题 1 当一行有三个元素的时候直接加个伪类 原图 想要实现的效果 html代码 div class floor centerLis
  • SQL 查询优化之 WHERE 和 LIMIT 使用索引的奥秘

    奇怪的慢sql 我们先来看2条sql 第一条 select from acct trans log WHERE acct id 1000000000009000757 order by create time desc limit 0 10
  • 为什么Java源文件中的public类 必须与文件名相同

    每个编译单元 文件 只能有一个public类 这么做的意思是 每个编译单元只能有一个公开的接口 而这个接口就由其public类来表示 而非public修饰的类都是为了给public修饰的类所做支撑的 从软件架构设计和安全性设计上得出的结论
  • 最新Mysql8.0.27安装配置基本使用

    目录 下载MySQL 配置目录文件 初始化Mysql 安装Mysql 配置环境 基本使用 下载MySQL 官方下载地址 https dev mysql com downloads 下载后解压 路径自定义 并新建文件夹data 配置目录文件
  • Vulkan教程翻译之十 创建 Descriptor Set

    原文链接 https vulkan lunarg com doc sdk 1 2 131 2 windows tutorial html 09 init descriptor set html 创建 Descriptor Set 这一章节的
  • haproxy搭建web集群

    目录 HAProxy HAProxy的主要特性 HAProxy负载均衡调度策略 HAProxy的配置文件解读 HAProxy部署 1 安装环境 2 下载haproxy安装包 并安装 3 新建haproxy用户 并在 etc 下创建hapro
  • linux 目录创建与删除 centos7

    root wyflinux tmp cd tmp 进入 tmp 目录 选择在tmp联系目录创建 root wyflinux tmp mkdir p test1 test2 test3 test4 mkdir p 直接创建多级目录 递回 ro
  • 【数据库系统概论】第四、五章:数据库安全性、完整性

    视频 参考资料 内容来自参考链接和视频 文章目录 第四章 数据库安全性 安全性概述 安全性控制 试图机制 审计 数据加密 第五章 数据库完整性 正确性 相容性 三大完整性 第四章 数据库安全性 安全性概述 不安全因素 非授权用户对数据库的恶
  • 用Unity3D实现太阳系仿真

    用Unity3D模拟太阳系仿真 模拟要求 写一个程序 实现一个完整的太阳系 其他星球围绕太阳的转速必须不一样 且不在一个法平面上 操作步骤 1 创建如下结构 sun 里包括8大行星 并且设置好距离和大小 建立结构 建议用2D显示来直观设置距
  • 收藏

    点击上方 小白学视觉 选择加 星标 或 置顶 重磅干货 第一时间送达 本文转自 视觉算法 图片来源于网络 语义分割在自然数据集的分割效果不断进步 有研究逐步应用到了遥感领域 尤其是高分辨率遥感影像 由于遥感图像具有海量数据 尺度依赖 空间相
  • 《Kubernetes部署篇:Ubuntu20.04基于containerd部署kubernetes1.24.17集群(多主多从)》

    一 架构图 如下图所示 二 环境信息 1 部署规划 主机名 K8S版本 系统版本 内核版本 IP地址 备注 k8s master 63 1 24 17 Ubuntu 20 04 5 LTS 5 15 0 69 generic 192 168
  • 两个数的简单计算器

    两个数的简单计算器 本题要求编写一个简单计算器程序 可根据输入的运算符 对2个整数进行加 减 乘 除或求余运算 题目保证输入和输出均不超过整型范围 方法一 include
  • 13.网络爬虫—多进程详讲(实战演示)

    网络爬虫 多进程详讲 一 进程的概念 二 创建多进程 三 进程池 四 线程池 五 多进程和多线程的区别 六 实战演示 北京新发地线程池实战 前言 个人简介 以山河作礼 Python领域新星创作者 CSDN实力新星认证 第一篇文章 1 认识网
  • iso文件添加服务器,服务器挂载本地iso文件

    RHEL6 3配置文件共享 2 autofs服务 在上篇博文中我们介绍了利用NFS服务设置文件共享 在客户端必须要先将服务器端的NFS共享目录挂载到本地 然后才能使用 其实在Linux系统中还为我们提供了另外一种更为简单的使用NFS共享的方
  • Java对象深拷贝的几种方式

    对象拷贝 项目开发过程中很多时候需要进行对象复制 可是有的时候会发生复制后的对象 在原对象改变后也相应发生改变 这种时候就有问题了 所以很有必要了解对象的深拷贝 以及深拷贝的几种方式 new 对象 手动 new 新的对象 一个属性一个属性的
  • 掌财社:Flask怎么实现注册登录项目?

    注册和登录功能是绝大多数web应用都需要实现的功能 是相当基础的功能模块 注册登录功能实现需要注意的地方也有很多 今天小编带来了一篇flask实现注册登录功能的项目的简单实现的文章 希望能给正在学习flask的小伙伴一点帮助 本文主要介绍了
  • 调试共享几何图形池

    没有这一节的资料 但是代码该调试到这里了 随意调试着玩吧 环境变量本机都没有设置 看这个意思 似乎是只需要一个几何体 所有的瓦片用类似于matrixTransform gt addChild node 的方式 看看创建 上一层 为什么是第0
  • 买卖股票的最佳时机含手续费--贪心算法

    LeetCode 买卖股票的最佳时机含手续费 给定一个整数数组 prices 其中第 i 个元素代表了第 i 天的股票价格 非负整数 fee 代表了交易股票的手续费用 你可以无限次地完成交易 但是你每笔交易都需要付手续费 如果你已经购买了一
  • 利用Google翻译实现网站国际化——js插件

    文章描述了很多作者的思路 显得繁琐和冗余 若无兴趣请直接下载资源 查阅最终解决方案 最终解决方案 代码静态化已经全部完成 包括面板语言文件 已添加完备的注释 请直接查阅 下载插件js谷歌翻译插件 示例请使用 本地静态资源 html 需要修改
  • Spring AutowireCapableBeanFactory

    Spring AutowireCapableBeanFactory接口的使用小结 Spring的ioc容器中有一个接口叫AutowireCapableBeanFactory 我们从名字中可以看出 具有自动装配Bean的能力 而且这里笔者先透