我刚刚继承了一个Java应用程序,在检查代码后,我看到了IMHO是Spring框架的混蛋.你看,Java团队似乎对接口有厌恶,所以我们最终得到这样的东西:
@Autowired private SomeConcreteFinalClass _myField;
没有Spring配置,没有定义bean,也没有机会我可以单独测试包含对象.这本质上是一个基于注释的工厂,具有Spring的开销.
我不在线,还是像用大象枪杀死苍蝇?我只需要进行现实检查,因为团队中的其他人都认为这是完全可以接受的.
编辑 在许多情况下,这些带注释的工厂出现在复杂的处理类中,这些类将从隔离测试中获益匪浅.该团队也对测试表示不满.
我希望,这里没有任何神秘感.如果我有一个具体的类,那不是一个接口,并且没有相应的Spring bean来"设置"该对象,那么它无疑是一个可以用10行代码实现的美化工厂.
Spring在系统中没有以任何其他方式使用; 就是这个.
我现在的目标:
制定测试政策
教育团队了解组件隔离的优点
将这些Autowired字段移到接口后面
我想最后一个问题是:如果我们没有测试或以任何其他方式利用框架,保持这些字段是否有任何好处.new
如果依赖项是不可变的,我也是对象.