Servlet容器实现Java EE规范的Web组件契约,为Web组件指定运行时环境,包括安全性,并发性,lifecycle management,事务,部署和其他服务。
Apache tomcat是一个开源示例。
每个Web应用程序使用满足javax.servlet.ServletContext
给出的合同的对象
Spring IOC容器还实现了Java EE规范的Web组件契约。
每个Web应用程序使用满足org.springframework.context.ApplicationContext
给出的合同的对象
为什么Spring IOC容器比servlet容器更受欢迎?
答案 0 :(得分:3)
在这个问题中有许多有问题的陈述,我会尽量通过添加一些" list"来尽量澄清一些事情。希望有用的事实:
除了IOC之外,spring还提供了与许多不同技术的相当好的集成(想想它是Spring可以做的另一件事)。现在,在这些技术中,您可以找到Web框架(称为spring MVC),各种模板引擎(就像JSP),REST,使用数据库(Spring Data),安全模型(Spring security)等等。 所有这些使得spring成为任何JEE规范实现的竞争对手。 Spring在概念上做出了JEE所做的一切(可以说更多),但并不遵循JEE建立的标准。话虽如此,在现代版本中,差异变得越来越不重要,在许多情况下,除了自己的做事方式外,Spring确实尊重JEE提供的界面和注释。
所以,现在很明显Spring和Tomcat并没有真正相互竞争。事实上,他们可以一起工作,并且它是一个非常广泛的串联: 可以使用spring框架开发将在tomcat上运行的应用程序。 另一个成功的模型是使用spring boot,它允许将tomcat嵌入到spring引导应用程序中,并在引擎盖下使用它来处理web(HTTP / Rest)请求。
希望这有助于理解Spring和Tomcat之间的差异