【问题标题】:How does Spring fit into my application architecture?Spring 如何适合我的应用程序架构?
【发布时间】:2011-03-12 15:17:17
【问题描述】:

我目前正在使用 Java 重建现有的 PHP 应用程序。因此,我有一个现有的前端 GUI 和一个正在使用的现有数据库架构。

这是我正在努力的技术堆栈:

  1. jQuery,客户端
  2. 检票口,前端
  3. 春天,???
  4. 休眠,ORM
  5. MySQL,数据库

在阅读Wicket In Action 和 Hibernate 文档中有关 Spring 的内容之前,我设想通过我自己的业务逻辑将两者连接在一起。我有使用 JBoss Seam 的经验,但有人告诉我 Spring 几乎没有可比性(尽管 IMO 文档另有建议)。没有在我的阅读列表中添加一本关于 Spring 的书(我还没有找到合适的、评论不错的书),我不知所措。

Spring 将在此技术堆栈中提供哪些好处?

主观和可选的后续问题:哪些参考资料(书籍、网站等)可以帮助我开始使用 Spring 3 的部分内容?

【问题讨论】:

  • Spring 并没有真正像那样坐在堆栈中。在标准的 3 层 Web 堆栈中,它跨越 DAO、服务和视图层。
  • 好吧,我绝对不会将它用于视图...我已经充分利用了 Wicket。
  • 我主要讲的是Spring的依赖注入/管理。

标签: java hibernate spring web-applications wicket


【解决方案1】:

首先,您可以在没有 Spring 的情况下制作您的 Web 应用程序。但是 Spring 会大大方便一些事情。 Spring 框架是一个轻量级的、非侵入性的。春天就像一种导体。除了其他方面,Spring 还可以帮助您:

  1. 保持对象松散耦合。这将使您的应用程序更加灵活,并对未来的变化持开放态度

  2. 通过 AOP(面向方面​​编程)对事务的强大支持。

  3. 对象关系映射 (ORM) 集成模块。 Spring 不尝试实现自己的 ORM 解决方案,但确实提供了几个流行的 ORM 框架的挂钩,包括 Hibernate、Java Persistence API、Java Data Objects 和 iBATIS SQL Maps。 Spring 的事务管理支持所有这些 ORM 框架以及 JDBC。

  4. Spring MVC 框架。尽管 Spring 集成了几个流行的 MVC 框架,但它也带有自己非常强大的 MVC 框架,可以在应用程序的 Web 层推广 Spring 的松散耦合技术。

一本关于 Spring 的好书:Pro Spring

【讨论】:

    【解决方案2】:

    this review 中所述,Spring 是非侵入性的。它只是连接您的应用程序组件。并提供有用的类,使使用其他框架(JMS、JPA 等)更容易。 Spring 不会强迫你在任何地方使用它的类或接口。

    它处理的是组件(对象)的创建,因此您可以引用类的依赖项,而无需实例化它们。 IE。你说什么你的班级需要,而不是如何获得它。这使得应用程序非常灵活。

    简而言之 - 有关更多信息,请阅读链接文章。这与最新版本无关,但没关系。

    【讨论】:

      【解决方案3】:

      除了依赖注入之外,Spring 还提供了诸如声明式事务管理、与 ORM 的简单集成、面向方面的编程支持以及许多其他不错的功能。

      有关文档,请参阅 Spring 参考:http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html

      【讨论】:

        【解决方案4】:

        @Dolph,用最简单的术语来说,将 Spring 视为最高程度的应用程序框架。这个“框架”提供了几个“组件桶”,您可以在其中轻松插入不同类型的实现。例如,对于 ORM,您可以选择使用 Hibernate 而不是 JPA 或 TopLink,对于前端,您可以选择 Wicket 而不是 Struts 或 SpringMVC,等等。

        这一切的美妙之处(除了其他帖子中提到的所有好处)是它允许您在未来轻松地更换任何这些实现​​。所以,基本上有一天你可以把 Hibernate 去掉,换成 TopLink,它永远不会对其他组件造成连锁反应。

        使用 Spring 的另一个好处是您的代码变得不那么混乱并且与其他类的依赖关系松散,因为您自己创建新对象的时间更少,Spring 会为您处理这些。也就是说,您将很快意识到测试代码对您来说是多么容易,因为您要测试的 API 变得非常原子化。这是人们在编写测试用例时气馁的主要原因之一,因为他们很快意识到,为了测试一个 API,他们必须构建很多东西来测试它。正因为如此,整个过程很脆弱,想象一下,如果你更改了那个 API,你需要在再次测试之前重新构建所有内容。

        Pro Spring 书很好,@JLBarros 提到。我非常喜欢Spring in Action。当我第一次开始使用 Spring 时,它非常容易阅读。这可能是我从皮肤到皮肤阅读的一本参考书。

        【讨论】:

        • 我喜欢In Action系列,但是看了目录之后我对这本书没有信心……但话又说回来,我不知道我在做什么想离开春天,所以我不知道该寻找什么!第二版预计也将于 2010 年 12 月出版。
        • The In Action 绝不是关于 Spring 的所有细节。为此,您需要直接参考 springsource 网站,因为它们拥有我见过的最完整的文档。 In Action 帮助我立即开始,并且解释非常容易理解。之后我需要更多信息时,我会在 springsource 周围挖掘。
        猜你喜欢
        • 2016-03-03
        • 2010-11-11
        • 1970-01-01
        • 2018-12-15
        • 2021-03-04
        • 1970-01-01
        • 1970-01-01
        • 2014-10-26
        • 1970-01-01
        相关资源
        最近更新 更多