您 可以 定义
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提取映射。
它比您已经拥有的工作要多一些,但是它更加灵活并且不易出错。如果您要构建某种可扩展的框架,则这特别有价值。您希望对人们的使用方式施加更少的限制。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)