gpt4 book ai didi

spring - 'everything' 应该在 Spring 应用程序中进行 spring 管理吗?

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:47:36 25 4
gpt4 key购买 nike

我们正在开发一个新的应用程序,我们想使用 Spring(大学项目!)

当你编写一个新的 Spring 应用程序时,每个对象都应该被 Spring 注入(inject)吗?

class A {
...
AHelper helper = new AHelper();
helper.doSomething();
...
}

class AHelper {
public void doSomething(){}
}
  1. 在这种情况下,是否应该使用 setter 将 AHelper 注入(inject)到 A 中?如果 A 类依赖 5 个 helper,是否应该全部注入(inject)?这是最佳实践吗?如果是,我们从中得到了什么?

  2. 另外,如果 AHelper 类依赖于 AHelperHelper,而 AHelperHelper 又依赖于 AHelperHelperHelper,那么整个依赖链是否应该在 XML 中进行配置。我就是觉得不对劲!

最佳答案

在我看来,最好在项目开始时就决定哪些对象是 bean,哪些不是。它可以基于他们的责任,或者,在我的例子中,他们所在的。这条规则很容易向其他团队成员解释,它最大限度地减少了项目中间的修改和惊喜

所以,我通常做的事情:

  • Controllerservicerepository 层是 Spring bean。它们通常全部连接在一起,同时拥有一些 bean 和一些常规对象 (POJO) 过于复杂。

  • Model 实体不是 Spring bean。如果模型实体只是 POJO,开发通常会更简单。此外,如果您在一次操作中加载数百个它们,并且它们都是 bean,则可能会导致性能不佳。

  • DTOVO...好吧,我通常不需要它们,但如果需要,我会将它们视为模型实体。

  • 实用程序 类。它们分为三种:

    • 静态方法类:显然它们不能是 beans。它不会帮助你。

    • 简单对象,例如您自己的 map :将它们保留为常规对象即可。

    • Helpers,例如 CsvFileConstructor:在我看来,这些只是服务,但有些人更喜欢将它们放在 util 包裹。不管怎样,它们通常需要一些配置(在 CSV 情况下:编码、基本路径、分​​隔符...),因此如果将它们制作成 bean,您可以获得一些好处。

  • 异常枚举,...:当然,没有 bean 。

关于spring - 'everything' 应该在 Spring 应用程序中进行 spring 管理吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11665168/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com