java - Spring 是一个光荣的工厂;这是可以接受的吗?

标签 java spring

我刚刚继承了一个 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/

相关文章:

java - 如何在跨平台环境中使用JNA获取Java中正在运行的进程列表?

java - InputSource 和 InputStream 有什么区别?

java - Hibernate - 注释和公共(public)注释之间的区别?

java - 为什么 Spring 将工厂方法 arg 报告为不明确?

spring - 如何将输入流转换为InputStreamsource或Datasource以在Spring JavaMail中附加

java - 使用 junit +spring 测试 DAO 文件

spring - SQLSTATE(08006), ErrorCode(17002) 使用 HikariCP JDBC 连接池时

java - 如何在仅打印 20 个数字的情况下分隔 1000 个数字的 ArrayList 中的每一行?

java - 设计具有不同响应参数但相同请求的 REST API

spring - 配置文件的 cargo 复制不起作用