sca*_*age 9 spring web-services inversion-of-control maven
我有一个使用Spring IoC的多模块Maven项目,类似于
parent-proj
- module1
- module2
- module3
- web-module
Run Code Online (Sandbox Code Playgroud)
我的问题是:
组装applicationContext文件的最佳实践是什么?我应该在Web模块中创建一个巨大的applicationContext-web.xml吗?或者我应该在每个子模块中创建applicationContext-module <#>.xml,并在我的applicationContext-web.xml中导入所有这些模块?
我一直在使用第二个选项.现在它看起来有点失控(例如bean覆盖具有相同id的bean等).
谢谢.
yor*_*rkw 10
首先,如果module1,module2和module3是纯粹的java库(例如,包含Domain Model,DAO,Service类等),它们在web模块中被引用和使用,我们通常不会在这个纯粹的java库中操作Spring容器.
其次,您不应该按项目模块拆分Spring容器.根据需求,您可以按应用程序层溢出Spring容器,并在Web模块项目中定义多个applicationContext文件(以避免单个巨大的applicationContext.xml).例如,这就是我们通常做的事情:
web-module/src/main/webapp/WEB-INF:
applicationContext-dataAccess.xml
applicationContext-dataStore.xml
applicationContext-security.xml
applicationContext-web.xml
... ...
web.xml
Run Code Online (Sandbox Code Playgroud)
希望有意义.
我也喜欢第二种方法,但使用Spring classpath*:
伪URL.就像是:
<import resource="classpath*:META-INF/module-context.xml" />
Run Code Online (Sandbox Code Playgroud)
这将在我的模块META-INF文件夹中加载任何模块xml bean定义.
现在它看起来有点失控(例如bean覆盖具有相同id的bean等).
这只是组织项目的问题.我总是试图使用,@Autowired
所以Spring可以根据我声明的接口解决依赖关系.当然,我从不扫描模块外的包以逃避Id的这类问题.
如果无法进行自动装配,则只通过xml声明bean并将其放在那里.
归档时间: |
|
查看次数: |
5813 次 |
最近记录: |