jackson
sally
ANSWER: It is one of very few projects that can claim clean code structure with no circular dependencies between packages.
Provide choice at every level. Spring lets you defer design decisions as late as possible. For example, you can switch persistence providers through configuration without changing your code. The same is true for many other infrastructure concerns and integration with third-party APIs.