I’m new to Spring and got a situation that single project with multiple modules including one web module. Web module uses Spring MVC, but I was wondering if I can have main Spring configuration at project level that takes care of whole project, so that I can take full advantages of Spring framework.
main
-module1
-module2
-web
+spring3.1, spring-security
What would be the best setting for this case?
The build layout and runtime CLASSPATH are two different things. Even if you define separate
applicationContext.xmlfiles or@Configurationclasses in different modules, they might get merged into a single CLASSPATH.That being said
module1andmodule2might declare their own contexts, but since the CLASSPATH is merged at runtime, only a single main context will be created. Also if you choose to use CLASSPATH scanning in one module, it might pick-up classes (beans) annotated with@Servicein other modules.In
webmodule, which should also have dependencies on Spring core libraries, will also depend onspring-web, MVC andspring-security. This module will create childwebcontext, that has access to main context but not the other way around.Obviously you should have only a single copy of each library in your uber-JAR (
ear?)