gpt4 book ai didi

java - 为什么 servlet 容器不优于 spring IOC 容器?

转载 作者:行者123 更新时间:2023-11-29 00:00:59 24 4
gpt4 key购买 nike

Servlet 容器实现了 Java EE 规范的 Web 组件契约,为 Web 组件指定了一个运行环境,包括安全性、并发性、lifecycle management 、事务、部署和其他服务。

Apache tomcat 是一个开源示例。

满足 javax.servlet.ServletContext 给定契约的对象,用于每个 Web 应用程序


Spring IOC 容器还实现了 Java EE 规范的 Web 组件契约。

满足 org.springframework.context.ApplicationContext 给定契约的对象,在每个 Web 应用程序中使用


为什么 Spring IOC 容器优于 servlet 容器?

最佳答案

这个问题中有很多有问题的陈述,我会尽力通过添加一些希望有所帮助的事实“列表”来澄清一些事情:

  1. Tomcat 没有实现 JEE 规范,事实上,它仅以在 JEE 的保护伞下实现小的(尽管重要且广泛使用的)规范而闻名:servlet(和 JSP,在技术上是 servlet但采用更像 HTML 的形式)。
  2. 的确,tomcat 也遵循 JEE 中描述的 WAR 部署模型,但在 JEE 中有更多类型的存档与 tomcat 无关。此外,最新版本的 tomcat 允许“嵌入式模式”,您根本不必使用 WAR。
  3. Spring,简而言之,就是一个IOC容器,tomcat根本没有涉及到的东西。我假设你知道什么是 IOC,所以我不会在这个问题上深究 IOC。
  4. 除了 IOC 之外,spring 还提供了与许多不同技术的相当好的集成(将其视为 Spring 可以做的另一件事)。现在在这些技术中,您可以找到 Web 框架(称为 spring MVC)、各种模板引擎(就像 JSP)、REST、使用数据库(Spring Data)、安全模型(Spring security)和许多其他东西。所有这些都使 spring 成为 JEE 规范的任何实现的竞争者。Spring 在概念上使 JEE 所做的一切(甚至可以说更多)但不遵循 JEE 建立的标准。话虽如此,在现代版本中,差异变得越来越不明显,在许多情况下,除了自己的做事方式之外,Spring 确实尊重 JEE 提供的接口(interface)和注释。

  5. 所以,现在很明显,Spring 和 Tomcat 并没有真正相互竞争。事实上,他们可以一起工作,这是一个非常广泛的串联:可以使用 spring 框架开发将在 tomcat 上运行的应用程序。另一个成功的模型是使用 spring boot,它允许将 tomcat 嵌入到 spring boot 应用程序中,并在后台使用它来处理服务器 Web (HTTP/Rest) 请求。

希望这能说明一些问题并有助于理解 Spring 和 Tomcat 之间的区别

关于java - 为什么 servlet 容器不优于 spring IOC 容器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46506290/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com