有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java应该在spring应用程序中对“一切”进行spring管理吗?

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

当您编写一个新的Spring应用程序时,是否应该对每个对象进行Spring注入

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

class AHelper {
    public void doSomething(){}
}
  1. 在这种情况下,是否应使用设定器将辅助件弹簧注射到模具中?如果A级依赖5名助手,是否应全部注射?这是最佳实践吗?如果是,我们能从中得到什么

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


共 (3) 个答案

  1. # 1 楼答案

    我见过所有物体都被注入的项目,这是一场噩梦

    我将确定您可能构建的更大规模组件,并将其创建为Spring Bean,如果:

    1. 您可能想要配置它们
    2. 在它们上使用Spring AoP(例如用于事务等)
    3. 客户端可能希望使用这些组件重新组合应用程序

    例如,在我当前的项目中,我们通过Spring启用新的更大规模组件,这些组件可能需要在发布时启用/禁用,或者其他团队将使用,或者我们需要在发布时启用JMX(通过Spring AoP)

  2. # 2 楼答案

    不是所有的。但在这种情况下,这可能是个好主意,是的。您获得的是通过在其中注入模拟AHelper来单元测试A的可能性。您可以获得许多其他东西(安全性、事务方面等),但这取决于上下文以及对象AAHelper的类型

    这同样适用于你所有的连锁店。请注意,XML并不是配置Spring应用程序的首选方式。注释更易于使用,并且允许使用最小的XML配置文件

  3. # 3 楼答案

    在我看来,在一个项目开始时,最好决定哪种对象是bean,哪种不是bean。可以通过它们的责任性来区分,或者,在我的情况下,也可以通过放置它们的来区分。这个规则很容易解释给其他项目伙伴,并且它最小化了项目中间的修改和惊喜EME>。p>

    所以,我通常做的是:

    • 控制器服务存储库层是Spring Bean。它们通常是相互关联的,我发现了一种过度复杂的做法,即同时拥有一些bean和一些常规对象

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

    • DTOVO。。。我通常不需要它们,但如果需要,我会把它们当作模型实体

    • 实用程序类。有三种:

      • 静态方法类:显然它们不能是bean。这对你没有帮助

      • 简单的对象,例如您自己的地图:只需将它们作为常规对象

      • 助手,比如CsvFileConstructor:在我看来,这些只是服务,但有些人更喜欢把它们放在util包中。无论如何,它们通常需要一些配置(在这种情况下:编码、基本路径、分隔符……),所以如果你做豆子,你可以得到一些好处

    • 异常枚举,…:当然,没有豆子