获取 Spring bean 的新实例

2024-01-04

我有一个名为MyInterface。实现的类MyInterface(我们称之为MyImplClass)还实现了Runnable接口,以便我可以使用它来实例化线程。这是我现在的代码。

for (OtherClass obj : someList) {
    MyInterface myInter = new MyImplClass(obj);
    Thread t = new Thread(myInter);
    t.start();
} 

我想要做的是在我的 ApplicationContext.xml 中声明实现类并为每次迭代获取一个新实例。所以我的代码看起来像这样:

for (OtherClass obj : someList) {
    MyInterface myInter = // getting the implementation from elsewhere
    Thread t = new Thread(myInter);
    t.start();
} 

如果可能的话,我想仍然保留 IoC 模式。
我怎样才能这样做?
Thanks


您可以尝试使用 spring 范围原型的工厂模式,如下所示。定义一个抽象工厂类,它会给你MyInterface object

public abstract class MyInterfaceFactoryImpl implements MyInterfaceFactory {

@Override
public abstract MyInterface getMyInterface();

}

然后定义 Spring bean.xml 文件,如下所示。请注意myinterfacebean 被定义为原型(所以它总是会给你新的实例)。

<bean name="myinterface" class="com.xxx.MyInterfaceImpl" scope="prototype"/>

然后用工厂方法名称定义factorybean。

<bean name="myinterfaceFactory" class="com.xxx.MyInterfaceFactoryImpl">
    <lookup-method bean="myinterface" name="getMyInterface" />
</bean>

现在你可以打电话myinterfaceFactory获取新实例。

for (OtherClass obj : someList) {
        MyInterface myInter = myInterfaceFactory.getMyInterface();
        Thread t = new Thread(myInter);
        t.start();
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

获取 Spring bean 的新实例 的相关文章

随机推荐

  • Bash 脚本不会匹配正则表达式

    我有以下 bash 脚本 应该生成输出 TEST bin bash test TEST THING OBJECT X if test a zA Z0 9 a zA Z0 9 A Z s then echo BASH REMATCH 1 fi
  • Visual Studio 9.0 Beta 程序文件位于 C:\

    我在 C 根目录中有几个 Visual Studio 9 0 Beta 程序文件 eula 1028 txt eula 1031 txt eula 1033 txt eula 1036 txt eula 1040 txt eula 1041
  • 在 fullCalendar 上使用 clientEvents 方法过滤事件

    我有一个完整的日历正在运行 现在我想使用客户事件 http fullcalendar io docs event data clientEvents 过滤事件的方法如下 selecter provider somevalue events
  • 使用 HTTP 基本身份验证的 python Flask REST API 的安全性

    我的服务器上运行着 python Flask 公开了一个由 iOS 应用程序使用的 REST API 我正在使用 Flask HTTPAuth 模块进行 HTTP 基本身份验证 我想知道这有多安全 因为每个请求都会发送用户名 密码字符串 我
  • 大型backbone.js Web应用程序组织

    我目前正在开发一个基于backbone js 的大型网络应用程序 并且在组织 僵尸 等方面遇到了很多问题 因此我决定对代码进行重大重构 我已经编写了一堆辅助函数来处理 僵尸 但是 我想从头开始 为代码创建一个很好的结构 组织 我还没有找到很
  • 制作多列的表格视图

    我正在尝试创建这样的东西 其中每一行代表一个工作集 并包含重量和重复次数 用户可以通过按按钮添加新行 但我还没弄清楚如何在 tableView 中做到这一点 这就是我希望它看起来像这样 有什么建议 想法吗 有多种方法可以做到这一点 我将这样
  • 在 Ruby 中解析 JSON 字符串

    我有一个要在 Ruby 中解析的字符串 string desc someKey someValue anotherKey value main item stats a 8 b 12 c 10 有没有简单的方法来提取数据 这看起来像Java
  • 签名的 apk 中出现 ClassNotFoundException

    如果我在 Android 设备上安装并运行签名的 APK 则会收到此错误 如果我只是编译应用程序并直接在设备上运行 则不会出现此错误 似乎缺少的片段是在我的项目代码中 而不是在任何外部库中 我该如何调查该错误 我尝试重建 清理项目等 如果在
  • Java 泛型与 ArrayList 添加元素

    我有课A B C and D where B延伸A C延伸A and D延伸A 我有以下内容ArrayList每个都有一些元素 ArrayList b b ArrayList b
  • .NET Core 工具:导入项目时的 MSB3644

    我制作了一个基于 docker 容器microsoft dotnet 1 0 sdk 按照指南 我执行了dotnet new console并得到一个文件dotnet csproj dotnet restore and dotnet run
  • C++ 中的“<<”运算符是什么? [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我无法理解以下代码中运算符 long
  • 从备份 SQL Server Express 创建/恢复数据库

    我的计算机上没有 SQL Server Management Studio 我有一个数据库备份 SQL Server 2008 R2 我的计算机上安装了与 Visual Studio 2010 Ultimate 一起安装的 SQL Serv
  • Keras 中的仅偏置层

    如何在 Keras 中构建一个层 将输入 x 映射到 x b 形式的输出 其中 b 是相同维度的可训练权重 这里的激活函数也是恒等式 您始终可以通过扩展来构建自定义层tf keras layers Layer类 这就是我要做的 import
  • 如何在android中每x分钟运行一个异步任务?

    如何在特定时间运行异步任务 我想每2分钟运行一次 我尝试使用延迟发布但不起作用 tvData postDelayed new Runnable Override public void run readWebpage 100 在上面的代码中
  • SQL中如何删除重复记录

    如何删除sql中的重复记录 In SQL Server 2005以上 WITH q AS SELECT ROW NUMBER OVER PARTITION BY dup column ORDER BY dup column AS rn FR
  • 快速滑出菜单而不滑动导航栏(以编程方式)

    几天来我一直在尝试制作左侧滑出菜单 我无法让任何库与我的应用程序配合使用 因此我求助于 raywenderlich 的教程 http www raywenderlich com 78568 create slide out navigati
  • Hibernate映射:一列到多个表

    我有一个针对场景的 最佳实践 问题 设想 DB 中的多个实体 例如 Document BlogPost Wiki 可以由个人共享 不是为每个实体创建共享表 而是创建单个共享表 问题是 如何将共享表与不同的实体进行映射 我有三个选项 请告知哪
  • 如何从 C# 与英特尔新的 DRNG(RDRAND 指令)交互? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我希望从 C 程序集中使用英特尔的数字随机数生成器 Ivy Bridge 中的 RDRAND 指令 我查看了 cpp 库 但我希望有一个更
  • 在 UIImageView 中旋转图像

    是否可以仅旋转 UIImageView 中的图像 我正在寻找有关它的信息 但我只找到了如何旋转 UIImageVeiw 的信息 您可以使用以下代码旋转图像 注意 这使用了 CGImageRef 您可以通过以下方式从 UIImage 获取它
  • 获取 Spring bean 的新实例

    我有一个名为MyInterface 实现的类MyInterface 我们称之为MyImplClass 还实现了Runnable接口 以便我可以使用它来实例化线程 这是我现在的代码 for OtherClass obj someList My