问题:spring框架里面applicationContext.xml 和spring-servlet.xml 的区别
-
在Spring框架中applicationContext.xml和Spring -servlet.xml有任何关系吗?
-
DispatcherServlet可以使用到在applicationContext.xml中声明的属性文件吗?
-
另外,为什么我需要
*-servlet.xml
呢?为什么只有applicationContext.xml是不够的?
回答一
Spring允许您在parent-child这个层级结构中定义多个上下文。
applicationContext.xml定义了“root webapp context”的beans,即与webapp关联的上下文。
spring-servlet.xml(你想叫什么都行)定义了一个servlet的应用程序上下文的bean。在一个webapp(一个Spring servlet)中可能有很多这样的文件(例如:servlet spring1的spring1 .xml,servlet spring2的spring2 .xml)。
spring-servlet.xml中的bean可以引用applicationContext.xml中的bean,但反之则不行。
所有Spring MVC控制器都必须放在Spring -servlet.xml上下文中。
在大多数简单的情况下,applicationContext.xml上下文不是必需的。它通常被用于包含webapp中所有servlet共享的bean。如果您只有一个servlet,那么没有什么意义,除非你有特殊的用处。
回答二
简单来说就是:
-
applicationContext.xml定义了在所有servlet之间共享的bean。如果您的应用程序有多个servlet,那么在applicationContext.xml中定义共有的资源那就很有用了。
-
spring-servlet.xml定义了只与该servlet相关的bean。这是dispatche servlet。因此,你的Spring MVCcontrollers 必须要在这个文件中定义。
-
如果在web应用程序中只运行一个servlet,那么在spring-servlet.xml里面中定义所有的bean也是没有问题的鸭。
文章翻译自Stack Overflow:https://stackoverflow.com/questions/3652090/difference-between-applicationcontext-xml-and-spring-servlet-xml-in-spring-frame