是什么让Spring框架成为轻量级容器?

时间:2011-11-14 04:00:25

标签: spring terminology

当人们提到Spring与其他框架相比是一个轻量级的包含时,它们意味着什么?它在系统中占用的内存较少,或者它没有像EJB容器那样的启动停止操作,而且它没有使用特殊的容器?

是什么让Spring成为轻量级容器?

5 个答案:

答案 0 :(得分:8)

无论是“轻量级”还是“重量级”,都是关于比较的。当我们与普通J2EE容器进行比较时,我们认为Spring是轻量级的。从提供的设施的额外内存占用的角度来看,它是轻量级的(例如,事务控制,生命周期,组件依赖管理)

然而,有时还有其他标准来比较容器的“重量”,例如:设计和实施的侵入性;提供的设施等。

具有讽刺意味的是,与其他基于POJO的容器(如Guice和Plexus)相比,Spring有时被视为重量级容器。

答案 1 :(得分:6)

我认为“轻量级”主要是一个流行词。它的含义是高度主观的,并且基于背景。它可能意味着“低内存占用”,它可以是低执行开销,低启动开销。人们还用它来区分一些感知的复杂程度和/或学习曲线。在任何情况下,它肯定是相对的,因为在“重量”方面“光”变得“重”的任何尺度上都没有明确的点。

我个人认为这是一个危险的词,因为它没有真正的,可量化的意义。这是人们投入建筑方案以加强他们想要使用的某个框架的“专业”部分的东西。如果您在任何此类情况下看到或听到它被使用,那么这是一个绝佳的机会来询问“这意味着什么?”。如果你得到愤怒或沮丧的反应(加上眼睛晃动和头部摇晃),这意味着该人已决定某种架构,但未设法制定连贯或客观的理由。

编辑:不确定我是否会将spring归类为“容器”,但这是类似的苹果和橘子讨论。我称之为框架。

答案 2 :(得分:6)

Spring称自己为“轻量级”,因为您不需要全部Spring来使用它的一部分。例如,您可以使用 Spring JDBC 而不使用 Spring MVC

Spring为不同目的提供各种模块;您可以根据所需的模块注入依赖项。也就是说,您不需要下载或注入所有依赖项或所有JAR来使用特定模块。

enter image description here

如果要运行 Java EE 应用程序,则不能只创建一个可以自行运行的小应用程序。您将需要一个 Java EE 应用程序服务器来运行您的应用程序,例如 Glassfish WebLogic WebSphere 。大多数应用程序服务器都是大而复杂的软件,安装或配置并不容易。

Spring不需要这样的东西。例如,您可以在任何小型独立程序中使用Spring依赖注入。

答案 3 :(得分:2)

由于其他J2ee容器尤其是EJB2.1需要更多配置,因此弹簧重量轻,它可以有很多无用的代码,它具有复杂的目录结构,用于打包应用程序,总体上需要额外的内存;另一方面,spring最小化所有这件事。它很轻。

答案 4 :(得分:0)

我想也可以说spring重量轻,因为它使用POJO(普通的Java对象)。POJO类不需要实现,可以扩展特定于技术的API(Interfaces,Classes),或者它不受任何技术的限制特定的API

相关问题