+1 for Alfresco. Uses Spring for IOC and other standard Java technologies. It is pretty well documented, and easy to follow. In fact, the few times I couldn't get what I needed from the documentation, I was able to dig into the source code and figure it out pretty quickly. Very easy to write extensions and mods for it.