春天是一个美化的工厂; 这可以接受吗?

Rya*_*rle 8 java spring

我刚刚继承了一个Java应用程序,在检查代码后,我看到了IMHO是Spring框架的混蛋.你看,Java团队似乎对接口有厌恶,所以我们最终得到这样的东西:

@Autowired
private SomeConcreteFinalClass _myField;
Run Code Online (Sandbox Code Playgroud)

没有Spring配置,没有定义bean,也没有机会我可以单独测试包含对象.这本质上是一个基于注释的工厂,具有Spring的开销.

我不在线,还是像用大象枪杀死苍蝇?我只需要进行现实检查,因为团队中的其他人都认为这是完全可以接受的.

编辑 在许多情况下,这些带注释的工厂出现在复杂的处理类中,这些类将从隔离测试中获益匪浅.该团队也对测试表示不满.

我希望,这里没有任何神秘感.如果我有一个具体的类,那不是一个接口,并且没有相应的Spring bean来"设置"该对象,那么它无疑是一个可以用10行代码实现的美化工厂.

Spring在系统中没有以任何其他方式使用; 就是这个.

我现在的目标:

  • 制定测试政策
  • 教育团队了解组件隔离的优点
  • 将这些Autowired字段移到接口后面

我想最后一个问题是:如果我们没有测试或以任何其他方式利用框架,保持这些字段是否有任何好处.new如果依赖项是不可变的,我也是对象.

Eli*_*lie 4

我同意你的观点,这是对 Spring 可以做的事情的滥用(而不是 Spring 应该做的事情)。设计应用程序的人是这样的吗?听到他们以这种方式构建应用程序的理由会很有趣。