Just to clarify the details in this post. When declaring a <bean> with an id that id value is mapped to an actual XML id that can be validated by the parser. When using <ref local="..."/> the value of the local attribute is validated, by the XML parser, against all the XML ids in the SAME file. To refer to a bean in another file but in the same logical context you need to use <ref bean="..."/>. Here the bean attribute is NOT validated by the XML parser and is validated instead by Spring. This allows you to define beans ids that are outside the current file.
So to summarise:
<ref local="..."/> will validate the local attribute against bean ids in the same file and <ref bean="..."/> will not.