Answers:
在Maven的文件结构可能与此帮助
本质上,Spring配置文件(可以使用任何名称,而不仅仅是通用名称applicationContext.xml
)被视为类路径资源,并位于下src/main/resources
。在构建过程中,这些文件然后被复制到WEB-INF/classes
目录中,这是这些文件结束的通常位置。
变体包括一个附加spring
目录(例如src/main/resources/spring
),用于将Spring上下文与专用于应用程序框架的其他资源分开。您可能希望将应用程序上下文划分为专用层,例如:
example-servlet.xml
example-data.xml
example-security.xml
等等。
像开发/测试/生产这样的不同环境呢?
通常,您的Spring配置应该从其环境中获取环境配置。通常,这意味着使用JNDI,JDBC,环境变量或外部属性文件来提供必要的配置。我按优先顺序列出了这些文件,因为JNDI通常比受控生产集群中的外部属性文件更易于管理。
对于集成测试,您可能需要使用“仅测试” Spring配置文件。这将包含使用测试bean或配置的特殊上下文。这些将出现在src / test / resources下,并且可能带有test-
前缀以确保开发人员了解其用途。典型的用途是提供一个非JNDI数据源,它可能在构建自动化测试期间针对HSQLDB数据库,并将在测试用例中引用。
但是,通常,大多数Spring上下文文件在层之间移动时,不需要进行专门的修改。应该是在dev / test / production中使用相同的构建工件(例如WAR文件)而只是具有不同的凭据的情况。
您的项目是否拆分为Maven模块?如果是这样,您可以为配置文件添加一个额外的模块。让我们称之为配置模块
config-module
|
|--> src\main\resources\config\spring\applicationContex.xml
|--> src\main\resources\config\properties\application.properties
|--> pom.xml
这种配置是一个建议。设置您自己的文件集, 使其像JAR一样打包,然后将此模块添加为任何其他模块(Web,Ear's lib,另一个jar)的依赖项。
您将有权访问配置模块资源(xml,属性等),因为它们位于类路径中。
Web模块的pom
<dependency>
<groupId>com.myproject.group</groupId>
<artifactId>config-module</artifactId>
</dependency>
然后使用来自外部Spring上下文文件的import语句。例如
<import resource="classpath*:com/package/subpackage/**/config/applicationContext.xml" />