Spring's auto-wiring isn't like that because of language limitations. You don't need DI to write Java. It's like that because some people love writing reflective frameworks. It's easier than modifying compilers but harder than just doing it the "obvious" way, so it satisfies a lot of programmers i-want-to-stretch-myself itch.