栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何在Spring应用程序上下文中扩展已定义的列表和映射?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何在Spring应用程序上下文中扩展已定义的列表和映射?

可以 定义

exampleMapping
第二个定义在单独的文件中,并且您
<importresource="..."/>
可以将一个文件导入另一个文件,但这是一种脆弱的方法,很容易被破坏。

我建议采取更有效的策略。将其替换为

exampleMapping
一个
Registry
类,该类又包含并管理映射:

public MappingRegistry<K,V> {   private final Map<K,V> mappings = new HashMap<K,V>();   public void addMapping(K key, V value) {      mappings.put(key, value);   }   public Map<K,V> getMappings() {      return Collections.unmodifiableMap(mappings);   }}

然后,编写一个向注册表注册映射的类:

public class MappingRegistrar<K,V> {   private final MappingRegistry<K,V> registry;   private K key;   private V value;   @Autowired   public MappingRegistrar(MappingRegistry<K,V> registry) {      this.registry = registry;   }   public void setKey(K key) {      this.key = key;   }   public void setValue(V value) {      this.value = value;   }   @PostConstruct   public void registerMapping() {      registry.addMapping(key, value);   }}

您的配置将如下所示:

<bean id="mappingRegistry" /><bean id="mappingA"  p:key="keyA" p:value="valueA"/><bean id="mappingB"  p:key="keyB" p:value="valueB"/><bean id="mappingC"  p:key="keyC" p:value="valueC"/>

这些映射现在可以按照您认为合适的任何方式散布在您的配置中,并且它们将自动组装。

ExampleServcie
然后向注入并相应地
MappingRegistry
提取映射。

它比您已经拥有的工作要多一些,但是它更加灵活并且不易出错。如果您要构建某种可扩展的框架,则这特别有价值。您希望对人们的使用方式施加更少的限制。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/419758.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号