web.xml,beans.xml,applicationContext.xml等之间的区别

时间:2013-12-12 09:42:20

标签: java spring spring-mvc

我一直在使用Spring MVC一段时间,现在在Glassfish服务器上运行的Netbeans中创建我的项目。虽然一切正常但我觉得我对每个XML文件中的内容都缺乏了解 - 在某些情况下,这导致我只是在每个文件中一个接一个地尝试一大块XML直到它工作。

我在谷歌上找不到任何明确的描述,而且我已经尝试了几次。

我会详细说明我目前的理解,然后是否有人可以跟进更详细的解释,或者让我知道我错误的地方,我会非常感激。

的web.xml

这似乎是通过告诉它用于处理查询的类来配置servlet容器。混淆似乎是虽然在这里配置Spring不起作用 - 你需要在这里安装一些配置来安装Spring,即

<filter>
  <filter-name>springSecurityFilterChain</filter-name>
  <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>

<filter-mapping>
  <filter-name>springSecurityFilterChain</filter-name>
  <url-pattern>/*</url-pattern>
</filter-mapping>

您可以在 web.xml 中添加它以使Spring Security正常工作 - 但是您实际上在另一个文件中配置了Spring Security。

调度员的servlet

这似乎类似于 web.xml ,因为它是关于配置servlet容器以启用Spring - 但在我的项目中它大多是空的,只包含一个viewResolver 。这里应该介绍什么以及它与 web.xml 的区别?

的beans.xml

此文件除了xml根标记<beans>以及所有项目中的一些命名空间/模式定义外,此时都是空的。它真的需要什么吗?

根标记中的bean-discovery-mode="annotated">是否为空?

的applicationContext

这似乎是所有实际Spring配置的所在,例如<mvc:annotation-driven /><context:component-scan />等。

您还可以将此配置拆分为多个文件,并使用<import />将这些文件链接到应用程序上下文中。

的glassfish幅

我大部分都忽略了这个档案,有什么理由我不应该这样做吗?

问题

所以真正的问题是:

  • 我从上面错过了什么?
  • 为什么单独的 beans.xml 似乎什么都不做?它是在引入注释之前的遗产吗?
  • 为什么同时存在 dispatcher-servlet.xml web.xml ,它们之间有什么区别?
  • glassfish-web.xml 与这两个不同?
  • 如何判断xml的片段是否应该进入哪些文件而不在它们中进行尝试直到它起作用? (到目前为止我已经开发的粗略经验是 applicationContext.xml 中的弹簧配置,在 web.xml 中安装spring组件,忽略其他文件&#34;!)

提前致谢,

1 个答案:

答案 0 :(得分:25)

web.xml 是一个应驻留在所有J2EE Web应用程序中的文件。其规范由J2EE规范定义。在这里,您可以配置应用的一般行为。例如servlet,过滤器,安全策略等。

dispatcher-servlet 是Spring MVC框架中的一个特殊servlet。您必须在 web.xml 中定义其映射,才能在您的网络应用中启用Spring。

beans.xml 是用于配置某些CDI设置的文件。例如bean-discovery-mode="annotated"表示只有带有CDI范围注释的类才会被视为CDI托管bean。

applicationContext.xml 这里你实际上是对的。它是主Spring配置文件的通用名称。你可以在这里设置很多东西,比如创建和连接一些Spring bean。

glassfish-web.xml 通常是GlassFish服务器的 web.xml 的扩展。并不总是需要它。如果想要专门为GlassFish服务器配置一些设置,则需要它。例如,如果您在 web.xml 中配置安全性部分,则必须将用户角色从 web.xml 映射到GlassFish领域角色。

希望它有所帮助。