java应该在spring应用程序中对“一切”进行spring管理吗?
我们正在开发一个新的应用程序,我们想使用Spring(大学项目!)
当您编写一个新的Spring应用程序时,是否应该对每个对象进行Spring注入
class A {
...
AHelper helper = new AHelper();
helper.doSomething();
...
}
class AHelper {
public void doSomething(){}
}
在这种情况下,是否应使用设定器将辅助件弹簧注射到模具中?如果A级依赖5名助手,是否应全部注射?这是最佳实践吗?如果是,我们能从中得到什么
另外,如果类AHelper依赖于AHelperHelper,而类AHelperHelper又依赖于AHelperHelper,那么应该在XML中配置整个依赖链。我只是觉得不对
# 1 楼答案
我见过所有物体都被注入的项目,这是一场噩梦
我将确定您可能构建的更大规模组件,并将其创建为Spring Bean,如果:
例如,在我当前的项目中,我们通过Spring启用新的更大规模组件,这些组件可能需要在发布时启用/禁用,或者其他团队将使用,或者我们需要在发布时启用JMX(通过Spring AoP)
# 2 楼答案
不是所有的。但在这种情况下,这可能是个好主意,是的。您获得的是通过在其中注入模拟
AHelper
来单元测试A
的可能性。您可以获得许多其他东西(安全性、事务方面等),但这取决于上下文以及对象A
和AHelper
的类型这同样适用于你所有的连锁店。请注意,XML并不是配置Spring应用程序的首选方式。注释更易于使用,并且允许使用最小的XML配置文件
# 3 楼答案
在我看来,在一个项目开始时,最好决定哪种对象是bean,哪种不是bean。可以通过它们的责任性来区分,或者,在我的情况下,也可以通过放置它们的层来区分。这个规则很容易解释给其他项目伙伴,并且它最小化了项目中间的修改和惊喜EME>。p>
所以,我通常做的是:
控制器、服务和存储库层是Spring Bean。它们通常是相互关联的,我发现了一种过度复杂的做法,即同时拥有一些bean和一些常规对象
模型实体不是Spring Bean。如果模型实体只是POJO,开发通常更简单。此外,如果在一个操作中加载数百个,并且它们都是bean,则可能会导致性能低下
DTO,VO。。。我通常不需要它们,但如果需要,我会把它们当作模型实体
实用程序类。有三种:
静态方法类:显然它们不能是bean。这对你没有帮助
简单的对象,例如您自己的地图:只需将它们作为常规对象
助手,比如CsvFileConstructor:在我看来,这些只是服务,但有些人更喜欢把它们放在util包中。无论如何,它们通常需要一些配置(在这种情况下:编码、基本路径、分隔符……),所以如果你做豆子,你可以得到一些好处
异常,枚举,…:当然,没有豆子