在我的项目中,我使用HSQLDB实例来进行单元测试,我通过方便地声明<jdbc:embedded-database>
标签来实现这一点,因为Spring的文档说here。
现在由于某种原因,我想给它多个名字:name="a,b,c"
,就像我们通常在普通的Spring bean上做的那样。但是,我发现标签不允许&#34; name&#34;属性。
也许我可以使用别名解决这个问题,但这对我来说似乎很荒谬。
编辑:
我想知道为什么Spring没有提供&#34; name&#34;适用于许多特殊标记,例如<jdbc:embedded-database>
,<util:list>
等
答案 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);
这是你从一开始就建议的。