我正在创建一个应用程序,我将项目分成不同的模块,如(域,存储库,服务和Web),以及许多用于邮件发送,文本格式化等的通用maven项目。我也使用Spring。
目前我只在Web项目中使用Spring应用程序上下文文件。但是,由于我正在为文本格式化等创建一般的pupose项目,它将库(例如freemarker)封装到实际应用程序中,我不喜欢我必须在Web项目的Spring应用程序上下文文件中指定库依赖配置。
问题是,为每个模块分配一个单独的Spring应用程序上下文文件,然后在我使用它们的项目中导入上下文文件是否正确。这是正确的方法,还是有更好的方法?
我感兴趣的是当我使用XML文件而不是JavaConfig时如何解决这个问题。
答案 0 :(得分:3)
为所有模块创建applicationContext.xml
配置并将其放在模块中,然后从Web模块导入所有模块的所有配置。
web.xml
<!-- Context Configuration locations for Spring XML files -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
classpath:/applicationContext-resources.xml
classpath:/applicationContext-dao.xml
classpath:/applicationContext-service.xml
classpath*:/applicationContext.xml
/WEB-INF/applicationContext*.xml
/WEB-INF/cxf-servlet.xml
/WEB-INF/security.xml
</param-value>
</context-param>
在此示例中,所有applicationContext.xml
都是从模块导入的。
此示例代码从AppFuse应用程序复制,请查看此应用程序的配置方式。使用AppFuse构建示例多模块Spring应用程序:
mvn archetype:generate -B -DarchetypeGroupId=org.appfuse.archetypes -DarchetypeArtifactId=appfuse-modular-spring-archetype -DarchetypeVersion=3.0.0 -DgroupId=com.mycompany -DartifactId=myproject -DarchetypeRepository=http://oss.sonatype.org/content/repositories/appfuse
参考文献:
答案 1 :(得分:1)
我是第二个Boris the Spider关于基于注释的配置的评论。
我对此问题的解决方案是首先在模块中(以及在任何地方)使用基于注释的配置。
第二步是将父项目配置为组件扫描模块的包。
最后,如果注释没有完全处理某些内容,那么很可能需要仔细配置才能在父内部工作。
Here is a newer reference基于注释的配置。大多数情况可以通过一个或两个简单的注释来处理。查看可用于设置属性等值的@Value
。