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

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

如何在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
提取映射。

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



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5056998.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-16
下一篇 2022-11-15

发表评论

登录后才能评论

评论列表(0条)

保存