为什么我不能给Spring的jdbc:embedded-database标签赋予多个名字?

时间:2014-08-10 17:14:18

标签: spring jdbc

在我的项目中,我使用HSQLDB实例来进行单元测试,我通过方便地声明<jdbc:embedded-database>标签来实现这一点,因为Spring的文档说here

现在由于某种原因,我想给它多个名字:name="a,b,c",就像我们通常在普通的Spring bean上做的那样。但是,我发现标签不允许&#34; name&#34;属性。

也许我可以使用别名解决这个问题,但这对我来说似乎很荒谬。

编辑: 我想知道为什么Spring没有提供&#34; name&#34;适用于许多特殊标记,例如<jdbc:embedded-database><util:list>

1 个答案:

答案 0 :(得分:1)

你的想法不是一种解决方法,也不是荒谬的。实际上,Spring解析bean定义的名称,使用逗号作为分隔符将其分隔,并在内部为每个“名称”创建一个别名。

如果您打开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);

这是你从一开始就建议的。