2013-04-08 20 views
2

Spring和Hibernate堆栈。有什么区别?在上下文参数中使用导入指定文件?

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

<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"/> 

的区别是什么或这两个是完全不同的?

谢谢!

回答

1

这是灵活性。

你会怎么做,如果你需要使用多个Spring配置文件,其中没有你掌控?

  1. 在你的web.xml中,您可以指定这两个文件,如你的第一个例子,因为你不能就能够将import元素添加到其中一方。
  2. 您可以创建一个新的文件,该文件import“ED他们两个。

任何一个都可以工作,因为灵活性是Spring努力实现的。

仅供参考,以下是各部分的一些文档: import elementcontextConfigLocation

虽然它们都使用同样的事情,似乎contextConfigLocation的支持Ant风格的模式匹配,其中进口元件不得。

+0

所以没有任何其他区别吗? – 2013-04-08 18:19:01

+0

我已经添加了更多信息。它们的功能有所不同,但在功能上它们是相同的。 – 2013-04-08 20:20:55

2

除了灵活性,一个重要区别,我在我们前面的项目已经注意到的是,如果你的背景文件是互相依赖的,那么它可能会导致问题。比方说,在你的appcontext.xml文件中,你正在导入一些DAO类的bean定义,而这又取决于hibernateconfig.xml。如果给这样的

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

那么DAO豆将被装入出了一个SessionFactory(从hibernateconfig)项注入其中。这有时会导致HibernateExceptions。在这种情况下你可以做的是DAO背景导入之前导入的appContext.xml的hibernateconfig.xml,就像这样:

appcontext.xml: 

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

这将确保Hibernate配置之前道配置加载。

+0

完美的使用案例! – 2013-04-09 15:38:06

+0

是的。谢谢 :) – 2013-04-09 18:19:07

相关问题