spring方法解决下面的问题:一个singleton bean A,在每次方法调用的时候都需要使用一个non-singleton bean B。而容器仅仅会一次性创建这个singleton bean A,因此,也仅有一次机会去设置它的属性。所以无法每次为bean A提供一个bean B的新实例属性。
通过放弃部分反向控制便可以解决这个问题,比如,bean A可以通过实现BeanFactoryAware,从而在需要的时候通过调用getBean("B")方法,向容器请求bean B的新实例。不过这种方法使运用代码耦合于spring。
而使用Lookup方法注射可以很好的解决这个问题。
Lookup方法注射指容器弄够在运行时重写Bean的抽象或具体方法,返回或创建容器中其他Bean实例。被创建的Bean通常是一个non-singleton bean(当然也可以是singleton的),在spring中,通过CGLIB修改客户端类上的二进制代码来实现这种注射。
包含方法直射的客户端类,应按如下形式定义抽象方法:
protected abstract SomeBean createSomeBean();
如果方法不是抽象的 ,spring会直接重写它。
配置如下:
<bean id="anotherBean" class="prodream.com.Bean_B" singleton="false"/>
<bean id="myBean" class=""prodream.com.Bean_A">
<lookup-method name="methodName"
bean="anotherBean"/>
</bean>
分享到:
相关推荐
requestUtils lookup方法简介
"Excel Lookup 函数的使用和经典查找方式" Lookup 函数是 Excel 中最常用的查找函数之一,它可以帮助用户快速地查找和匹配数据。本文将详细介绍 Lookup 函数的用法、语法、参数意义、应用实例,以及经典的条件查找...
### Delphi中ADOQuery使用了lookup字段后出现未知错误解决办法 在Delphi开发环境中,使用ADOQuery组件处理数据库查询时,经常会遇到一些常见的问题,尤其是涉及到lookup字段时。lookup字段通常用于显示一个表中的...
5. **查找和使用服务**:在需要使用`MyService`的地方,添加代码进行Lookup查询,并调用找到的服务实例的方法。 通过以上步骤,你就完成了一个基本的NetBeans Lookup查询示例。在实际开发中,Lookup机制可以用于...
用户只需输入或复制粘贴错误代码,Lookup就能快速返回相关的错误信息,包括错误类型、错误原因以及可能的解决方法。 使用Lookup工具可以节省开发者大量的时间,避免在文档和搜索引擎中反复搜索,提高开发效率。对于...
(如果不能正常使用,请用Visual Studio打开源码,将项目所需的引用更新到正确的路径,编译生成RevitLookup.dll,在与RevitLookup.addin复制到C:\ProgramData\Autodesk\Revit\Addins\2019下即可)
为了解决这个问题,我们可以使用Lookup方法注入。首先,我们需要移除Class A中的@Autowired注解,然后创建一个返回Class B的新方法。例如: ```java @Component public class ClassA { public void printClass() {...
RevitLookup的使用方法相对简单。首先,你需要将压缩包"RevitLookup-2019.0.0.3"解压,其中包含了必要的DLL文件和安装说明。然后,将这些文件复制到Revit的插件目录下,通常是在"Add-Ins"子目录内。重启Revit后,你...
RevitLookup的使用方法通常包括以下步骤: 1. **安装**:通过运行msi安装包,将RevitLookup集成到Revit环境中。 2. **启动**:在Revit中,通过插件菜单或快捷键启动RevitLookup。 3. **选择元素**:在Revit模型中...
5. **安装方法**:将插件文件添加到“C:\ProgramData\Autodesk\Revit\Addins”的对应版本文件夹下,意味着Revit Lookup的安装过程相对简单,只需复制和粘贴即可,无需复杂的配置步骤。 6. **提高效率**:对于Revit...
3. **Revit API**:学习Revit提供的各种类、方法和事件,如FamilyManager、ElementId、Parameter等,以及如何创建和修改Revit模型。 4. **图元和族**:理解Revit中的图元(Element)、类型(Type)和族(Family)的...
在"内存数组的处理_LOOKUP().xls"文件中,你可能发现了一些示例,展示了如何利用LOOKUP函数处理内存数组,以及如何与其他Excel函数结合使用,以解决实际问题。通过对这些示例的分析和实践,你可以更深入地理解LOOKUP...
在 Matlab 工作空间中,可以使用以下命令将数据导入到 Lookup Table 中: ```matlab 数据 = xlsread('data.xlsx'); reshape(数据, 2, 12); ``` 其中,数据是用户自定义的变量名,用于存储导入的数据。reshape 函数...
2. **实时交互**:用户可以直接在Revit界面中选择一个元素,然后在RevitLookup窗口中查看其详细信息,无需编写代码或使用复杂的调试器。这大大简化了问题诊断和性能优化的过程。 3. **参数值检查**:开发者可以查看...
RevitLookup的使用非常简单,只需在Revit中调用它,就可以选择模型中的任意元素进行检查。 安装这两个工具的方法是:首先,下载提供的压缩包文件,然后将其解压缩。在解压后的文件中,你会看到4个文件,这些都是...
revit开发必备工具 本包中是已经编译过的文件,可以直接使用 以下是编译过程 和 原始插件下载地址------------------------- 下载 RevitLookup for Revit 2016 ...
为了方便使用,可以在Revit的“附加模块”菜单中找到RevitLookup的入口。 总的来说,RevitLookup-2020.0.0.4.zip是一个针对Revit用户的实用工具,特别是对于那些参与Revit二次开发的人员。它简化了模型数据的查看...
5. **调试工具**:对于开发Revit API应用的程序员来说,RevitLookup能帮助快速定位和修复代码问题,因为它可以直接展示API对象的属性和方法。 在压缩包中,`RevitLookup.addin`文件是Revit的加载项配置文件,包含了...