我刚刚继承了一个 Java 应用程序,在检查代码后,我发现恕我直言,这是 Spring 框架的 SCSS 。你看,Java 团队似乎厌恶接口(interface),所以我们最终得到这样的结果:
@Autowired
private SomeConcreteFinalClass _myField;
没有 Spring 配置,没有定义 bean,我没有机会单独测试包含的对象。这本质上是一个基于注释的工厂,具有 Spring 的开销。
我是越线了,还是像用大象枪打苍蝇一样?我只需要进行现实检查,因为团队中的其他人 认为这是完全可以接受的。
编辑 在许多情况下,这些带注释的工厂出现在复杂的处理类中,这些类将极大地受益于隔离测试。不过,该团队也不赞成进行测试。
我希望这里没有什么神秘之处。如果我有一个具体的类,它不在接口(interface)后面,并且没有相应的 Spring bean 来“设置”该对象,那么它无疑是一个可以用 10 行代码实现的美化工厂。
系统中没有以任何其他方式使用 Spring;就是这样。
我现在的目标:
- 制定测试政策
- 教育 团队对组件的优点 隔离
- 移动这些 Autowiring 的字段 界面背后
我想最后一个问题是:如果我们不测试或以任何其他方式使用框架,那么保持这些字段 Autowiring 有什么好处。如果依赖关系是不可变的,我也希望 new
对象。
最佳答案
我同意你的看法,这是对 Spring 可以做的事情(相对于 Spring 应该做的事情)的滥用。设计应用程序的人是这样设计的吗?听听他们以这种方式构建应用程序的理由会很有趣。
关于java - Spring 是一个光荣的工厂;这是可以接受的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/595554/