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

Tim*_*m B 25 java spring spring-mvc

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

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

我将详细说明我目前的理解,然后如果有人可以跟进更详细的解释或让我知道我错在哪里会非常感激.

web.xml中

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

<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>
Run Code Online (Sandbox Code Playgroud)

您可以在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.xmlweb.xml,它们之间有什么区别?
  • 如何与GlassFish web.xml中来自这两个有什么不同?
  • 如何判断xml的片段是否应该进入哪些文件而不在它们中进行尝试直到它起作用?(到目前为止我开发的粗略经验是" applicationContext.xml中的 spring配置,在web.xml中安装spring组件,忽略其他文件"!)

提前致谢,

蒂姆

Fly*_*ing 26

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

dispatcher-servlet是Spring MVC框架中的一个特殊servlet.您必须在web.xml中定义其映射,以在Web应用程序中启用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领域角色.

希望能帮助到你.