3

Spring 和 Hibernate 堆栈。

我看到我们可以在标签web.xml下的文件中指定多个文件。<context-param>

<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/appcontext.xml, hibernateconfig.xml</param-value>
</context-param>

我们也可以从appcontext.xml文件中加载配置文件:

appcontext.xml:

<import resource="hibernateconfig.xml"/>

有什么区别或这两者完全不同?

谢谢!

4

2 回答 2

3

除了灵活性之外,我在早期项目中注意到的一个主要区别是,如果您的上下文文件相互依赖,那么它可能会导致问题。假设在您的 appcontext.xml 文件中,您正在为某些 DAO 类导入 bean 定义,而这又依赖于 hibernateconfig.xml。如果你给这样的条目

<param-value>/WEB-INF/appcontext.xml, hibernateconfig.xml</param-value>

在 web.xml 中,DAO bean 将在没有 sessionFactory(来自 hibernateconfig)注入的情况下加载。这有时会导致 HibernateExceptions。在这种情况下,您可以做的是在 dao 上下文导入之前在 appContext.xml 中导入 hibernateconfig.xml,如下所示:

appcontext.xml:

<import resource="hibernateconfig.xml"/>
<import resource="dao-config.xml"/>

这将确保在 dao 配置之前加载 hibernate 配置。

于 2013-04-09T05:47:30.210 回答
1

这是为了灵活性。

如果您需要使用多个 Spring 配置文件,您会怎么做?

  1. 在您的 web.xml 中,您可以指定这两个文件,就像在第一个示例中一样,因为您无法将import元素添加到其中任何一个。
  2. 您可以创建一个import'ed 两者的新文件。

任何一个都可以,因为灵活性是 Spring 所追求的。

作为参考,这里是每个部分的一些文档: import elementcontextConfigLocation

虽然它们都用于完全相同的事情,但 contextConfigLocation 似乎支持 Ant-Style 模式匹配,而 import 元素可能不支持。

于 2013-04-08T17:56:44.703 回答