【问题标题】:The importance of design in a spring appSpring应用程序中设计的重要性
【发布时间】:2011-06-02 04:28:56
【问题描述】:

我一直在研究如何将 spring 框架用于我的 java 应用程序。

总的来说,这是一种不同的编程方式,我说的是 DI 和 AOP!

在我看来,将基本部分分解为可重用组件的水平似乎需要大量工作(在设计过程中)。我质疑我什么时候知道它准备好开始编码(这可能只是经验)

猜我在看一些提示?你应该从哪里开始?似乎它必须从一开始就进行完美设计,以避免这种紧密耦合的场景在我使用过的其他应用程序中似乎很常见(不一定是我自己制作的)我什么时候知道是时候拍摄我的负载和代码了?

请不要标记这是主观的或我只是想从社区获得一些诚实和体面的建议。

提前致谢!

【问题讨论】:

  • “我什么时候才能知道是时候拍摄我的负载和代码了?”。嗯。什么?
  • 这样不合适吗? - 我的意思是开始工作,把笔放在纸上/手指放在钥匙上
  • 我认为这个问题的答案与“设计的重要性”的答案相同,即与您不使用这个库一样
  • 我本身并没有真正的答案,但从设计角度来看,它不必是完美的以避免紧密耦合。设计时,请专注于要使用的接口,避免考虑实现细节。我喜欢用白板来充实想法。否则,如果过于复杂,图表会有所帮助。
  • 现在就开始构建一个简单的示例应用程序,它使用 spring-mvc、hibernate、spring 声明式事务以及任何其他你觉得有趣的 spring 特性。它最终会被扔掉,但做是最好的学习方式。

标签: java spring dependency-injection aop


【解决方案1】:

我从未见过完全预先设计(在实施级别)的应用程序。相反,无论您是否使用 Spring,重构都是(应该是)过程的一部分。

也许你被 Spring 框架的范围所征服。不要这样。主要目标是使用依赖注入来反转控制,并允许您编写简单的 POJOS 来构建您的应用程序。它不会使应用程序变得更复杂,而是使应用程序更简单。

这并不是说 Spring 的一切都非常困难——事实并非如此。但是你可以在学习过程中学习更复杂的东西。

为了回应您的评论,请将 spring 配置视为您班级的元数据。您不能使用尚未定义的类来配置 Spring。 Spring 为您处理已定义 bean 的创建和生命周期。因此,如果 ClassA 依赖于 ClassB,那么当创建 ClassA 时,框架将为您创建依赖项(并注入它们)。

【讨论】:

  • 一个非常好的答案,谢谢。我的意思是这就是接口如此强大的原因之一。然而,对于 DI,我仍然有些困惑。我刚刚遇到这个问题:stackoverflow.com/questions/6206770/… 我相信我在这方面是在同一条船上,你如何连接不存在的对象以避免它们过于高度耦合?
  • 不,就您的代码而言,对象存在。Spring 会处理这些。
【解决方案2】:

当我使用 Spring DI 时,我意识到我不再花太多时间来确定是否要实例化对象,或者从某些服务中查找它们,或者对它们执行其他操作。

您可能也不应该过度使用 DI。一个好的指导方针是将应用程序拆分为您想要进行单元测试的“接缝”处的 bean。类似的方法 - 在应用层之间的“接缝”:数据访问、业务逻辑服务和 UI。

【讨论】:

    猜你喜欢
    • 2011-05-29
    • 2013-10-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多