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"/>
有什么区别或两者完全不同?
谢谢!
答案 0 :(得分: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配置。
答案 1 :(得分:1)
这是为了灵活性。
如果您需要使用多个弹簧配置文件,而您没有控制它们,您会怎么做?
import
元素添加到其中任何一个文件中。import
同时编辑这两个文件的新文件。任何一个都可以工作,因为灵活性是Spring努力的目标。
供参考,以下是每个部分的一些文档: import element,contextConfigLocation
虽然它们都用于完全相同的东西,但似乎contextConfigLocation支持Ant样式模式匹配,而import元素可能不支持。