Spring FactoryBean 和作用域一起工作

2023-12-23

我想一起使用 FactoryBeans 和作用域。具体来说,我希望将 FactoryBean 创建和返回的对象放置到指定的(可能是自定义的)范围中。问题在于执行以下操作:

<bean class="x.y.z.TestFactoryBean" scope="test" />

导致 FactoryBean 本身被限定作用域,并且对工厂创建的对象有一些不可预测的行为。我明白这是为什么;工厂本身是一个一流的 spring 管理的 bean,并且有自己的生命周期。但是,我找不到一种方法来指定从工厂返回的对象本身应该被限定范围。

另一方面,这正是我想要的(只要 TestFactoryBean 不实现 FactoryBean 接口):

<bean class="x.y.z.TestFactoryBean" name="testFactory">
<bean class="x.y.z.TestBean" factory-bean="testFactory" 
      factory-method="getObject" scope="test" />

所以真正的问题是,如何让 Spring 表现得像上面第二个示例一样,但使用真正的 FactoryBeans?


您不能轻松地在从 a 返回的 bean 上使用自定义范围FactoryBean.

来自春天的Java 文档 http://static.springsource.org/spring/docs/3.0.x/javadoc-api/org/springframework/beans/factory/FactoryBean.html:

FactoryBeans可以支持单例和原型

如果你想要FactoryBean的返回 bean 具有原型范围,那么您必须实现isSingleton()像这样的方法:

public class TestFactoryBean implements FactoryBean<TestBean> {

  // the rest of the required methods are removed for simplicity reasons..

  public boolean isSingleton() {
        return false;
    }
}

要支持自定义作用域,您必须自己实现逻辑,并且它不会很直观,因为FactoryBean只提供isSingleton()方法。我宁愿推荐使用其他解决方案而不是FactoryBean对于具有自定义范围的 bean。

希望这可以帮助!

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

Spring FactoryBean 和作用域一起工作 的相关文章

  • 如何为小程序提供对文件系统写入的访问权限

    我在设置小程序的策略文件时遇到问题 我是第一次这样做 不知道如何在java中设置小程序的策略文件 实际上我想授予小程序在文件系统上写入的权限 为此我必须向小程序授予文件权限 所以我创建了一个名为 java policy 的文件 并将以下代码
  • 检查 IPv4 地址是否在私有范围内

    在 Python 中 使用 IPy 模块您可以执行以下操作 gt gt gt ip iptype PRIVATE 有没有一个库或简单的方法可以在 Java 中执行相同的操作 似乎不完全是但是InetAddress有一些 isXX 方法 例如
  • 使用 JSch 分别为各个提示提供输入

    问题是 SSH 连接需要在常规登录后提供另一个用户 ID 和密码信息 我正在使用 JSch 连接到远程服务器 它接受以下形式的输入InputStream 和这个InputStream只能通过一次 由于会话是交互式的 这会导致问题 我尝试将输
  • Kafka Java Consumer 已关闭

    我刚刚开始使用卡夫卡 我面临着消费者的一个小问题 我用Java写了一个消费者 我收到此异常 IllegalStateException 此消费者已关闭 我在以下行中遇到异常 ConsumerRecords
  • Android volley使用RequestFuture.get()时出现超时异常

    在我的片段中 我尝试使用 TMDB 的开放电影数据库来获取有关 正在播放 电影的详细信息 如果我使用 RequestFuture get time TimeUnit 方法来执行此齐射请求 我总是会收到超时错误 如果我在 Safari 中手动
  • Java 中的 ExecuteUpdate sql 语句不起作用

    我正在学习如何将 SQL 与 Java 结合使用 我已成功安装 JDBC 驱动程序 并且能够从数据库读取记录并将其打印在屏幕上 我的问题发生在尝试执行更新或插入语句时 没有任何反应 这是我的代码 问题所在的方法 public static
  • 将现有 eclipse 项目导出到 war 文件时出现“模块名称无效”

    我正在尝试将现有 Eclipse 项目导出到 war 文件 但无论我在 WAR Export 对话框页面中输入什么 系统总是返回 模块名称无效 我不知道如何解决这个问题 谢谢您的帮助 我有同样的问题 我修复了它 请按照以下步骤操作 您可以创
  • 如何使用 swagger-codegen-plugin (maven) 生成客户端代码?

    我需要使用 swagger codegen plugin for maven 在 eclipse 中生成服务器存根代码 你能帮忙怎么做吗 以及需要什么配置 在 pom xml 中 我找到了这个答案 您只需要像下面这样更改 pom xml 即
  • 是否有最新的 Facebook Java SDK? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 好像没找到最近更新的 如果没有 是否有一个好的 Java 库来执行与 Facebook 的 API 交
  • 从 Android 访问云存储

    我一直无法找到任何有关如何从 Android 应用程序使用云存储的具体文档 我确实遇到过这个客户端库 https cloud google com storage docs reference libraries然而 Google Clou
  • 使用 Spring 注入 Log4J 记录器

    我有一个带有以下 web xml 的 spring 2 5 webapp
  • 多线程——更快的方法?

    我有一堂有吸气剂的课程getInt 和一个二传手setInt 在某个领域 比如说领域 Integer Int 一个类的一个对象 比如说SomeClass The setInt 这里是同步的 getInt isn t 我正在更新的值Int来自
  • MongoDB java 驱动程序 3.0 在身份验证时无法捕获异常

    我超级卡住o 0 在尝试通过 Java 驱动程序进行身份验证时 存在捕获异常的问题 正如你可能会看到的Throwable类不工作 private MongoClient mongoClient private MongoDatabase m
  • Jetty Plugin 9启动不喜欢icu4j-2.6.1.jar

    我对 mortbay 的 Maven jetty 插件 6 有相同的配置
  • 在循环中按名称访问变量

    我正在开发一个 Android 项目 并且有很多可绘制对象 这些绘图的名称都类似于icon 0 png icon 1 png icon 100 png 我想将这些可绘制对象的所有资源 ID 添加到整数 ArrayList 中 对于那些不了解
  • Android项目中使用java获取电脑的IP地址

    我在用ksoap2 android http code google com p ksoap2 android 我需要使用java获取IP地址 这样我就不必每次都手动输入它 我所说的 IP 地址是指 例如 如果我这样做ipconfig使用命
  • Java String ReplaceAll 方法给出非法重复错误?

    我有一个字符串 当我尝试运行时replaceAll方法 我收到这个奇怪的错误 String str something op str str replaceAll o n it works fine str str replaceAll n
  • Spring中什么时候触发ContextRefreshedEvent?

    我知道当 ApplicationContext 完全加载时它会被触发一次 但是之后在运行时怎么办 Refreshed 一词意味着它将在刷新时触发 但我想知道 Spring 是否符合 ApplicationContext 刷新的资格 跟进问题
  • 使用自定义比较器在 Java 中创建 SortedMap

    我想创建一个TreeMap在 Java 中具有自定义排序顺序 排序后的键是字符串 需要根据第二个字符进行排序 这些值也是字符串 示例地图 Za FOO Ab Bar 您可以像这样使用自定义比较器 Comparator
  • 你能快速告诉我这个伪代码是否有意义吗?

    我相信我的代码现在是万无一失的 我现在将写出伪代码 但我确实有一个问题 为什么 DRJava 要求我返回 if 语句之外的内容 正如你所看到的 我为 ex 写了 return 1 只是因为它问了 但是它永远不会返回该值 谁可以给我解释一下这

随机推荐

  • svn relocate 错误 -- 无效的重定位目标

    我们的 svn 存储库的位置已更改为不同的 url 此外主干 分支和标签的相对路径也移动了一点 现在当我尝试svn relocate 我收到此消息 Invalid relocation destination https my repo s
  • Databricks (Spark):.egg 依赖项未自动安装?

    我有一个本地创建的 egg依赖的包boto 2 38 0 我使用 setuptools 来创建构建发行版 一切都在我自己的本地环境中运行 因为它获取boto正确地从PiP 然而在databricks当我将库附加到集群时 它不会自动获取依赖项
  • 如何快速创建一个可选的闭包?

    我试图在 Swift 中声明一个带有可选闭包的参数 我声明的函数如下所示 class Promise func then onFulfilled gt onReject gt if let callableRjector onReject
  • VSCode:防止分割编辑器在聚焦时调整大小?

    打开多个编辑器组 并且其中一个编辑器组足够小 聚焦较小的编辑器组会导致它变大 直到您切换回另一个编辑器 我希望将所有内容保留为我设置的大小 有没有设置可以防止这种情况发生 Note how it has to be made small f
  • 使用 Selenium WebDriver C# 从下拉列表中选择一个值 [重复]

    这个问题在这里已经有答案了 我在使用 WebDriver 的 C 绑定从下拉列表中选择值时遇到了困难 我过去既没有研究过 C 也没有研究过 WebDriver 我正在使用 WebDriver Selenium dotnet2 0b3 和 V
  • 在 MySql TIME 列中保存 LocalTime

    背景故事 我最近在保存时遇到了一个问题LocalTime to a TIMEMySQL 数据库中的列 节省价值9 00正在引起8 00保存在数据库中 这个问题没有出现在我的开发环境 Windows 上 但出现在我们尝试的两台 Linux 机
  • Scala 初始化行为

    请看下面的代码 trait MyTrait val myVal String class MyClass extends MyTrait val myVal Value class MyClass2 val myVal String ext
  • Cassandra 错误消息:由于本地暂停未将节点标记为关闭。为什么?

    我有 6 个节点 1 个 Solr 5 个 Spark 节点 使用 datastax 我的集群位于与 Amazon EC2 类似的服务器上 具有 EBS 卷 每个节点有3个EBS卷 使用LVM组成逻辑数据盘 在我的 OPS 中心 同一节点经
  • Python 文件吸食

    Python 中是否有一个单行代码可以读取文件的所有行 而不是标准的 f open x txt cts f read f close 看来这种事经常发生 所以必须有一句俏皮话 有任何想法吗 This will slurp the conte
  • 如何在 Windows 7 上查找 MAC 地址? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我可以使用命令找到我的机器的MAC地址ipconfig all在命令提示符下 网络上到处都说物理地址是MAC地址 这是命令的结果ipcon
  • CKEditor5 和 Angular2 - 在编辑器内单击以获取数据时获取插入符的准确位置

    在 Angular 2 中 当我单击某个对象内部时 我试图获取板条箱的确切位置CKEditor5 Balloon Editor实例 我将在页面上有几个实例 每个实例都通过 ViewChildren and a QueryList 每个实例都
  • Rust 中的不可变变量和 const 变量有什么区别?

    我了解到 如果变量没有使用显式声明为可变的mut 它变得不可变 声明后不能更改 那为什么我们有constRust 中的关键字 它们不是一样的吗 如果不是 它们有何不同 const 在 Rust 中是缩写constant并且与编译时评估 它显
  • 关闭 fancybox iframe 后 Chrome 中的后退按钮无法正常工作

    不久前我在 fancybox github 上发布了同样的问题 但当时问题无法解决 所以我想我可以在这里再试一次 在 Chrome 中 我打开 fancybox iframe 然后使用 iframe 页面上的链接进行导航 然后关闭 fanc
  • Scala REPL 中的嵌套环境

    是否有可能创建 enter Scala REPL 中的嵌套环境 这样之后exiting嵌套环境中 在退出环境中创建的所有变量绑定都会丢失 这就是我的wish会话可能如下所示 scala gt val x 1 x Int 1 scala gt
  • 自定义字体为 Android 中的某些字母组合提供了不正确的字形

    我在我的 Android 项目中使用自定义字体 由于某种原因 当文本包含字母时IJ一起 它给了我以下字形 这似乎是位于 uE2C5字体的 PUA 区域 个人I and J字形都存在于字体中 如果我将文本设置为 我可以让它们出现I J 它不是
  • 访问 Angular2 模板中的特定数组元素

    我有一个可以循环使用的数组ng for句法 然而 最终我只想访问该数组的一个元素 我不知道该怎么做 在我的组件脚本中我有 export class TableComponent elements IElement 在我的模板中 我可以通过循
  • 以编程方式原生 Android VPN

    这个问题存在变体 但我似乎无法理解某些东西 如果您阅读了功能末尾的内容工业控制系统 4 0 http developer android com about versions android 4 0 highlights html 其中提到
  • 如何跟踪迭代开始日期后已添加到冲刺中的 Azure 工作项?

    Folks 首先 这个问题基于这样的前提 我通过分析视图连接 Azure DevOps 数据 并且所有可用字段都已选择到视图中 我想跟踪开发团队是否坚持计划或处理已创建的积压项目或在冲刺开始后已添加到冲刺中的项目 但我不知道该怎么做 显然
  • 列出 Debian 中所有用户安装的软件包

    在我参加的一次网络安全竞赛中 我获得了一台安装了许多软件包的 Debian 虚拟机 并要求我清理无关或恶意的软件包 过去我用过dpkg l grep searchterm 以及执行此任务的常用包的列表 然而 这是极其低效且耗时的 为了加快我
  • Spring FactoryBean 和作用域一起工作

    我想一起使用 FactoryBeans 和作用域 具体来说 我希望将 FactoryBean 创建和返回的对象放置到指定的 可能是自定义的 范围中 问题在于执行以下操作