多模块项目中的Spring配置
问题内容:
我是Spring的新手,遇到这样的情况:单个项目包含多个模块,其中包括一个Web模块。Web模块使用Spring
MVC,但是我想知道我是否可以在项目级别拥有可以处理整个项目的主要Spring配置,以便可以充分利用Spring框架的优势。
main
-module1
-module2
-web
+spring3.1, spring-security
在这种情况下最好的设置是什么?
问题答案:
构建布局和运行时CLASSPATH是两件事。即使您在不同的模块中定义了单独的applicationContext.xml
文件或@Configuration
类,它们
也可能 会合并为一个CLASSPATH。
话虽如此module1
,module2
可能会声明自己的上下文,但是由于CLASSPATH是在运行时合并的,因此只会创建一个主上下文。同样,如果您选择在一个模块中使用CLASSPATH扫描,则它可能会拾取@Service
在其他模块中带有注释的类(bean)。
在web
模块中,该模块也应该依赖于Spring核心库,也将依赖于spring-web
MVC和spring- security
。该模块将创建子web
上下文,该子上下文可以访问主上下文,但不能访问其他上下文。
显然,您的uber-JAR(ear
?)中每个库应该只有一个副本。