It all depends on your design, and how you split your application (for example, are you packaging per layer or per feature). However, here's what I think.
You should have an XML file per module, and if that is still huge, you can still split that into separate XML files depending on the layer, for example
module-x-context.xmlmodule-y-dao-context.xmlmodule-y-service-context.xmlmodule-z-context.xml
As for your question regarding if you can inject beans defined in one XML into another bean defined in another XML, this is a sure thing (if you are loading all of the XML files in the same application context of course). Finally, if you are using eclipse, you can use the spring-ide plugin to define the different files, and you can create different sets of beans, which is going to help you with auto completion, and tells you if a bean you are referring to does not exist.