I know I asked a variation of this question before, but unfortunately, the suggested solution didn't work for us (downgrade Spring), as we're preparing for Q2 2016, and it's stated that all B2s should be upgraded to Spring 4.2.0+.
With that said, there is an issue with Spring's WebAsyncManager not liking being loaded multiple times across multiple contexts, as can happen when modules are set to load synchronously and each has it's own spring jar files. The most common suggested solution I can find is to instead put the Spring jar files in a shared class loader path, and have everything use the same jar files. After grepping the Learn folders, it appears that it's not already in a common location - every B2, including stock ones, includes the spring jar in it. Speaking of which, even on Q2 2016, it appears that most of them are still running old (3.1.1, 3.2.8) versions of Spring, so I'm not sure why the Bb help site says that "a building block that relies on the Spring framework mulst be updated to use Spring 4.2.0+." - Java 8 FAQs - Blackboard Help