7

这是一个面试问题。

面试官问我是否可以将 spring 用于所有目的,并且不使用任何 Java EE 框架就可以逃脱。

我说是的,但他问我应用程序是否分布式以及应用程序服务器的意义何在。

我不确定答案。

Spring 是否完成了 Java EE 框架所做的所有事情?

4

7 回答 7

3

嗯,春天很宽。所以你可以逐点复习。我不是 Java EE 方面的专家,但我确信 Spring 可以涵盖很多(如果不是全部)Java EE 问题。而且我很确定 Spring 可以处理应用程序中的大多数层/问题。

首先是春季国际奥委会。您可以使用 Spring IOC 配置对象图。它有助于在任何层配置实现层所需的所有组件。

Spring-MVC-Web:您可以配置 MVC Web 组件以处理和服务所有 Web 应用程序请求。我认为你可以用它做一些很酷的事情。使用其他业务元素(包括 IPC - 进程间通信)配置 Web 响应及其必要的配置。

Spring Security 是 Acegi 的遗产。它是一个 Web 框架,用于定义对 Web 资源的角色定义访问。

我不确定Hessian是否也是Spring的。无论如何,它是轻量级的,它有助于与其他进程中的组件进行通信à la RMI

嗯......我不确定持久性,但我认为 Spring 有用于 JDBC、Hibernate 等的模板,所以无论如何它都可以提供帮助(正如建议所示:JmsTemplate 和 RestTemplate 可用于与其他业务组件通信!)。

这里的核心思想是:您可以从头开始制作应用程序,因此在所有情况下,Spring 都可以提供一个框架来缓解每一层上的困难/重复任务。春天会吗?是的。

请检查其他功能,看看 Spring 是否有它的功能。我敢打赌。

于 2012-04-18T13:33:06.743 回答
2

在本质上,Java EE 是一组规范(其中一些是由 Spring 团队贡献的!)

Spring 的使命宣言是“简化 Java 开发”

它使用以下技术做到这一点:

  1. POJO -> 便于测试
  2. DI -> 促进松散耦合
  3. AOP -> 促进关注点分离、可维护性等
  4. 模板 -> 提供标准编程模型,为您完成繁重的工作

Spring 和 Java EE 没有“Vs”关系。

使用上述技术,Spring Framework 可以让您更高效地构建(Java EE)基于标准的应用程序。

>Does spring do everything that the Java EE framework does ?

根据我上面所说的,这个问题可以改写为“Spring 是否支持/实现了构成 Java EE 规范的所有技术?” - 不,但它确实做到了它的目标,那就是简化大多数 Java EE 技术的开发。

也就是说,这种简化 Java 开发的权衡是,您现在需要掌握大量知识(Spring 框架)触手可及......(伴随着实践和谷歌 :))

>Can't we use Spring for distributed java applications?

你当然可以。对于大多数可以想象的用例,Spring 有大量的 Exporters/FactoryBeans 和 Clients(Templates)。

于 2012-04-19T09:06:52.417 回答
1

是的,Spring 可以在没有 Java EE 的分布式应用程序中使用。我们已经使用它在一个 XA 事务中向 MQ 发送消息和更新数据库。

根据这篇文章,Spring 绝对可以在分布式应用程序中单独使用。

http://www.wrox.com/WileyCDA/Section/Why-Use-the-Spring-Framework-.id-130098.html

http://www.artima.com/forums/flat.jsp?forum=276&thread=204508

于 2012-04-18T14:35:01.447 回答
0

从历史上看,(5 年前?)Spring 在分布式应用程序领域很薄弱,特别是数据库集群。这不再是一个问题。我会说 Spring 在分布式计算方面走得更远,因为他们正在大力追求 Java EE 尚未接近的云技术。

于 2012-04-18T14:42:33.673 回答
0

我不这么认为。基本上 Spring 是关于 Java EE 框架之间的集成。

于 2012-04-18T13:32:03.897 回答
0

在我看来,Spring 的主要好处是它摒弃了 Java EE 框架的一些更重量级的组件(实体 Bean、会话 bean),并用轻量级替代方案取而代之。

在我看来,Spring 的主要优点之一是它解耦了许多组件,然后使用 XML 或注释将它们连接在一起。这使得编写单元测试变得容易(通过注入模拟组件而不是真实的组件),这在使用重量级 Java EE 组件时并不容易完成(无法轻松地对 EJB 2.1 实体 Bean 进行单元测试)。

许多 Spring 概念已进入 Java EE 标准,因此我认为 Java EE 不再是重量级选项,Spring 将与 Java EE 组件一起使用,例如应用程序服务器管理的连接池(通过 JNDI)、事务管理器, 队列管理器可以很容易地使用应用程序服务器进行管理,该应用程序服务器可以提供额外的功能,例如集群、故障转移、负载平衡、服务 Web 资源......

话虽如此,Spring(VMWare)背后的人有自己的应用服务器(tcServer),它基于Apache Tomcat,提供了很多spring使用的粘合剂,但并不像一些传统的应用程序那样“重”服务器(Websphere、Weblogic)。

于 2012-04-18T14:33:52.370 回答
0

为此使用弹簧集成框架。

使用可以使用 Akka 框架来管理具有 spring 集成的分布式应用程序。

Akka 使用 Actor 模型和软件事务内存来提高抽象级别并提供更好的平台来构建正确的并发和可扩展的应用程序。

查看分步教程,该教程提供了有关如何使用 Akka 框架构建分布式应用程序的更多信息。

通常,分布式应用程序是使用 Java-RMI 在 Java 中构建的,Java-RMI 在内部使用 Java 的内置序列化在节点之间传递对象。

于 2016-05-28T15:53:53.003 回答