在我的项目中,我使用一个HSQLDB实例来进行单元测试,我通过方便地声明一个<jdbc:embedded-database>标记来实现这一点,就像Spring的文档所说的here。
现在,出于某种原因,我想给它起多个名字:name="a,b,c",就像我们通常对普通的Spring bean所做的那样。然而,我发现标签不允许"name“属性。
也许我可以使用别名来解决这个问题,但对我来说这似乎很荒谬。
编辑:我想知道为什么Spring不为许多特殊的标签提供“名称”,比如<jdbc:embedded-database>、<util:list>等。
发布于 2014-08-11 04:43:15
你的想法不是一种变通的办法,也一点也不可笑。实际上,Spring解析bean定义的名称,使用逗号作为分隔符来分隔它,并在内部为每个" name“创建一个别名。
如果您打开org.springframework.beans.factory.xml.AbstractBeanDefinitionParser.parse(Element, ParserContext)的源代码,您将在第69行看到以下内容:
String[] aliases = new String[0];
String name = element.getAttribute(NAME_ATTRIBUTE);
if (StringUtils.hasLength(name)) {
aliases = StringUtils.trimArrayElements(StringUtils.commaDelimitedListToStringArray(name));
}
BeanDefinitionHolder holder = new BeanDefinitionHolder(definition, id, aliases);这就是你从一开始就建议的。
https://stackoverflow.com/questions/25231091
复制相似问题