Web.xml,bean.xml,applicationcontext.xml等之间的区别

2022-09-01 16:04:46

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

我无法在Google上找到任何明确的描述,我已经尝试了几次。

我将在这里详细说明我目前的理解,然后如果有人可以跟进更详细的解释或让我知道我在哪里错了,那将不胜感激。

网.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的 - 但是在我的项目中,它大部分是空的,只包含一个.这里应该放些什么,它与网络.xml有何不同?viewResolver

豆类.xml

目前,除了我所有项目中的xml根标记和一些命名空间/架构定义外,此文件都是空的。它真的需要任何东西吗?<beans>

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

应用语境

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

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

玻璃鱼网

我大部分时间都忽略了这个文件,有什么理由我不应该吗?

问题

所以真正的问题是:

  • 我从上面错过了什么?
  • 为什么有一个单独的豆子.xml似乎什么都不做?它是注释驱动引入之前的遗产吗?
  • 为什么同时存在调度程序-servlet.xmlweb.xml它们之间有什么区别?
  • 玻璃鱼网.xml与这两者有何不同?
  • 我如何判断xml片段是否应该进入其中的哪个文件,而无需在它们中全部尝试,直到它工作为止?(到目前为止,我开发的粗略经验法则是“应用程序中的弹簧配置context.xml,在web中安装弹簧组件.xml,忽略其他文件”!

提前致谢,

提姆


答案 1

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

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

beans.xml 是用于配置某些 CDI 设置的文件。例如,这意味着只有使用 CDI 作用域注释注释的类才会被视为 CDI 托管 Bean。bean-discovery-mode="annotated"

应用程序上下文.xml在这里你实际上是对的。它是主Spring配置文件的通用名称。您可以在此处设置许多内容,例如创建和连接一些Spring bean。

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

希望它有帮助。


答案 2

推荐