有一个maven项目,它会生成包含.ear
和.war
的{{1}}个文件。所有这些模块都使用加载了.jar
。
ContextLoaderListener
实际问题是我们的<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath*:context.xml</param-value>
</context-param>
- 模块有SpringBeans,它依赖于位于.war
- 模块中的其他一些SpringBeans。在应用程序启动期间,由于找不到.jar
的错误顺序,因此无法初始化Spring上下文。
问题是,如果有可能以某种方式在web.xml中设置加载spring上下文的正确顺序?
提前致谢。
答案 0 :(得分:0)
您可以更改WAR和JAR的配置文件名 - my-war-beans.xml&amp;我-JAR-beans.xml文件的。然后定义ContextLoaderListener以便它使用my-war-beans.xml(想法是只提供一个文件作为配置入口点):
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath*:my-war-beans.xml</param-value>
</context-param>
然后只需从my-war-beans.xml中的my-jar-beans.xml导入bean:
<beans>
<!-- Include beans from JAR -->
<import resource="classpath*:my-jar-beans.xml"/>
<!-- List beans from WAR -->
<bean id="myBean" class="myclass" />
</beans>
确保您的bean定义文件具有唯一的名称。 Classpath是平的,所以如果名字相同 - 这种方法很容易受到jar地狱问题的影响。请注意,您可能需要将“classpath *:my-jar-beans.xml”等URL更改为其他内容,具体取决于您在JAR / WAR中存储文件的位置。