Some additional thoughts to the comment of Dale Wyttenbach in answer to Keith Donald:
In order to ensure, that C isn't loaded twice we import in the topmost application.spring.xml all configurations (A, B, C and D). So the import of C is done only there, nowhere else.
Problem solved but other problems arise with this approach:
1) Design-flaw: dependencies between configurations aren't expressed explicitly
2) Running Tests: In order to run tests concerning for example B we had to load the configuration of B and C. Assumed C gets a dependency to a new configuration-file E, ALL tests of A,B,C AND D had to be changed. Instead we load the complete application-context for our tests. But now D and A are unnecessarily loaded for our B-test -> turnaround time increases.
Maybe there are approaches better than the one I outlined (interested to hear of them), but this issue would be handy to solve the problem in a simple way:
1) dependencies can be expressed explicitly (e.g. B imports C)
2) Each test had to load only the configuration of it's own module - dependent configurations are loaded transparently