Spring 注解 - 注入对象映射

2023-12-01

使用 XML 注释,我使用以下配置注入地图 -

   <bean id = "customerfactory" class = "com.brightstar.CustomerFactory">
        <property name = "getCustomerMap">
            <map key-type = "java.lang.String" value-type = "com.brightstar.CustomerImpl">
                <entry key = "DEFAULT" value-ref = "getDefaultImpl"></entry>
                <entry key = "PERSON" value-ref = "getPersonImpl"></entry>
                <entry key = "COMPANY" value-ref = "getCompanyImpl"></entry>
            </map>
        </property>
    </bean>

我创建了 3 个 bean - DefaultImpl 、 PersonImpl 和 CompanyImpl 。如何使用 Spring 注解将它们注入为地图?

编辑:目前,我已经执行了以下操作,但不确定这是否是推荐的方法

private Map<String, CustomerImpl> getCustomerMap ;
@Autowired
private GetDefaultImpl getDefaultImpl;
@Autowired
private GetPersonImpl getPersonImpl;
@Autowired
private GetCompanyImpl getCompanyImpl;

private static final String DEFAULT = "DEFAULT";
private static final String COM = "PERSON";
private static final String SOM = "COMPANY";


@PostConstruct
public void init(){
    getCustomerMap = new LinkedHashMap<String,CustomerImpl>();
    getCustomerMap.put(DEFAULT, getDefaultImpl);
    getCustomerMap.put(PERSON, getPersonImpl);
    getCustomerMap.put(COMPANY, getCompanyImpl);        
}

1.注入一个包含对象的地图, (使用Java配置)

你可以这样做...

@Configuration
public class MyConfiguration {
    @Autowired private WhiteColourHandler whiteColourHandler;

    @Bean public Map<ColourEnum, ColourHandler> colourHandlers() {
        Map<ColourEnum, ColourHandler> map = new EnumMap<>();
        map.put(WHITE, whiteColourHandler);
        //put more objects into this map here
        return map;
    }
}

===================

2.注入包含字符串的映射 (使用属性文件)

您可以将字符串值注入到映射中属性文件使用@Value注释和SpEL像这样。

例如,属性文件中的以下属性。

propertyname={key1:'value1',key2:'value2',....}

在你的代码中,

@Value("#{${propertyname}}")  
private Map<String,String> propertyname;

Note:1.主题标签作为注释的一部分。

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

Spring 注解 - 注入对象映射 的相关文章

随机推荐

  • 在 for 中声明结构?

    Apple LLVM 9 1 0 与 clang 902 0 39 2 使用 std c11 接受 typedef struct int i float f S for S s 0 0 s i lt 25 s i s f i 10 f 但拒
  • 日期时间插入然后选择:序列不包含元素

    我在sql server中的表结构是 TableId int Pk identity Data string DateNTime DateTime 我的方法是 public int insertData string data Date D
  • 列出模型剃须刀视图

    我有一个应用程序 asp net mvc 在控制器中我有这个 public ActionResult Index Upload Models ClientModels model1 new Models ClientModels Array
  • 如何在隐藏“IdentityUser”的同时向业务层公开“UserManager”?

    我不想引用 EntityFramework 因此Identity EntityFramework以其IdentityUser在我的域中 但我想用UserManager of Identity Core它使用IUserStore
  • 为什么个人访问令牌不适用于 Bitbucket REST API?

    TL DR 为什么 在 Bitbucket Web UI 中创建的名称 PAT 组合不适用于 Bitbucket REST API 或存储库克隆 我一直在读various 文档在比特桶上REST API and 个人访问令牌 目的是在调用前
  • 我可以使用 Spring 注入同一个类吗?

    我有一个类 UserService 实现了 Service 并用 Service StereoType 进行了注释 我正在使用 Spring AOP 并且想要为此做临时解决方法 我知道这可以用更好的方式来完成 Service public
  • 一个接一个地打开链接

    我正在制作一个网站 每 30 秒打开一个新窗口 我让它正确打开新窗口 但我希望它在打开新窗口之前关闭最后打开的窗口 因此一次只打开一个窗口 我该怎么做 到目前为止 这是我的代码
  • 在 Matlab 中使用 interp2 并输入 NaN

    我有一些相对完整的观测数据 但在矩阵中包含一些 NaN 值matlab我想使用将它们插值到更均匀间隔的网格interp2 因此 为了简单起见 假设我有一个完整的 无 NaN 值 矩阵 以及一个看起来像这样的矩阵 A 1 2 3 4 2 3
  • Jquery 粘性菜单不被页脚捕获

    谁能帮我找出我的脚本的问题吗 function var top sidebar offset top parseFloat sidebar css marginTop replace auto 0 var footTop footer of
  • 获取当前目录下的文件列表

    我正在尝试获取一个脚本来读取脚本文件所在目录的内容 然后根据部分名称识别几个特定文件并压缩它们 但我无法得到object Files财产来工作 有人能告诉我这里出了什么问题吗 Set FSO CreateObject Scripting F
  • 迭代视图网格 SwiftUI

    我想获取一个可变长度的数组并返回一个包含 3 列和可变行长度的视图网格 视图应该根据数组值更新其内容 以下代码将为每张卡片呈现一个 CardPicView 在滚动视图中标题为 A I struct ContentView View let
  • 在 IE8 中赋予子窗口焦点

    我正在尝试从 Javascript 函数启动一个弹出窗口 并使用以下调用确保它具有焦点 window open popupUrl popupName focus 它适用于所有其他浏览器 但 IE8 将新窗口保留在后台 并带有闪烁的橙色任务栏
  • 使用 AutoFac 和 AutoMock 模拟 CloudBlobClient

    我正在尝试为我的 AzureBlobRepository 编写单元测试 存储库在构造函数中接收 CloubBlobClient 我想嘲笑客户端 但这给出了一个例外 using var mock AutoMock GetLoose var m
  • 带有异步的 jQuery Ajax 调用返回 null responseXML

    我有简单的 JavaScript 代码 它使用 Ajax API 从服务器获取 XML function loadXML path node var response obj Fire Ajax request and get the XM
  • WCF、Silverlight:找不到 clientaccesspolicy.xml

    我正在尝试将我的 Silverlight 应用程序连接到我自己托管的 WCF 服务 我创建了一个 clientaccesspolicy xml 文件 并将其放置在服务宿主项目的根目录中 但是当我尝试访问该服务时 我的http 嗅探器说找不到
  • HTML 单独注释每一行,而不是块注释

    菜鸟问题 但我希望能够使用 VS Code 中的键盘快捷键快速注释 HTML 代码 问题是我得到这个 而不是这个 有人知道 VS Code 中有一个很好的扩展吗 谢谢 Julien 请参阅我写的这
  • 如何在android中以编程方式获取设备的IMEI/ESN?

    为了唯一地标识每个设备 我想使用 IMEI 或 CDMA 设备的 ESN 号 如何以编程方式访问它 你想打电话android telephony TelephonyManager getDeviceId 这将返回唯一标识设备的任何字符串 G
  • 当使用值实例化模板类对象时,C++20 概念无法编译

    请参考以下C 20代码 template
  • MySQL 对字符串第一部分的索引

    我正在 MySQL 中查询一个非常大的表 超过 3M 条记录 其中包含category id subcategory id 和邮政编码 数据库中的 zip 可能是也可能不是 10 个字符 目的是获取指定邮政编码的特定半径内的所有目录 子目录
  • Spring 注解 - 注入对象映射

    使用 XML 注释 我使用以下配置注入地图