当人们提到Spring与其他框架相比是一个轻量级的包含时,它们意味着什么?它在系统中占用的内存较少,或者它没有像EJB容器那样的启动停止操作,而且它没有使用特殊的容器?
是什么让Spring成为轻量级容器?
答案 0 :(得分:8)
无论是“轻量级”还是“重量级”,都是关于比较的。当我们与普通J2EE容器进行比较时,我们认为Spring是轻量级的。从提供的设施的额外内存占用的角度来看,它是轻量级的(例如,事务控制,生命周期,组件依赖管理)
然而,有时还有其他标准来比较容器的“重量”,例如:设计和实施的侵入性;提供的设施等。
具有讽刺意味的是,与其他基于POJO的容器(如Guice和Plexus)相比,Spring有时被视为重量级容器。答案 1 :(得分:6)
我认为“轻量级”主要是一个流行词。它的含义是高度主观的,并且基于背景。它可能意味着“低内存占用”,它可以是低执行开销,低启动开销。人们还用它来区分一些感知的复杂程度和/或学习曲线。在任何情况下,它肯定是相对的,因为在“重量”方面“光”变得“重”的任何尺度上都没有明确的点。
我个人认为这是一个危险的词,因为它没有真正的,可量化的意义。这是人们投入建筑方案以加强他们想要使用的某个框架的“专业”部分的东西。如果您在任何此类情况下看到或听到它被使用,那么这是一个绝佳的机会来询问“这意味着什么?”。如果你得到愤怒或沮丧的反应(加上眼睛晃动和头部摇晃),这意味着该人已决定某种架构,但未设法制定连贯或客观的理由。
编辑:不确定我是否会将spring归类为“容器”,但这是类似的苹果和橘子讨论。我称之为框架。答案 2 :(得分:6)
Spring称自己为“轻量级”,因为您不需要全部Spring
来使用它的一部分。例如,您可以使用 Spring JDBC 而不使用 Spring MVC 。
Spring为不同目的提供各种模块;您可以根据所需的模块注入依赖项。也就是说,您不需要下载或注入所有依赖项或所有JAR来使用特定模块。
如果要运行 Java EE 应用程序,则不能只创建一个可以自行运行的小应用程序。您将需要一个 Java EE 应用程序服务器来运行您的应用程序,例如 Glassfish , WebLogic 或 WebSphere 。大多数应用程序服务器都是大而复杂的软件,安装或配置并不容易。
Spring不需要这样的东西。例如,您可以在任何小型独立程序中使用Spring依赖注入。
答案 3 :(得分:2)
答案 4 :(得分:0)
我想也可以说spring重量轻,因为它使用POJO(普通的Java对象)。POJO类不需要实现,可以扩展特定于技术的API(Interfaces,Classes),或者它不受任何技术的限制特定的API