If you're talking about what I think you're talking about, then it's an interesting discussion.
Technically, because setFirst()
and getFirst()
are not synchronized
, then it's possible for setFirst()
to inject one object on Thread 1, and getFirst()
to return a different object on Thread 2. The Java memory model reserves the right to make this "eventually consistent", as they say.
So in the case of Spring, which configures its bean graph during startup (or the server's internal startup thread), it's possible that the HTTP request threads (for example) would not see that bean graph properly, due to the lack of synchronization.
Note: this has nothing to do with concurrent access. Even if the HTTP requests come in after Spring has initialized, the Java memory model does not guarantee that those threads will see the correct data.
In practice, this never happens (at least, I've never seen it happen). The lack of synchronization is only really a problem for concurrent threads, which isn't the issue here.
So it's really just an academic argument.
If this isn't what you're talking about, my apologies. It's still an interesting thought, though.