我们正在使用Spring,我向我的同事建议他应该使用@Schedule
而不是使用Runnable
和Thread.sleep()
手动编码行为。
我指出,注释更“高级”,更具描述性,更易于配置和测试,但这并不足以令人信服。他认为他只需要一个非常简单的行为,因此使用“魔法”会超过顶部并导致不必要的开销。
我是否错过了一些好的论点?
答案 0 :(得分:1)
我认为这通常与您想要实现的抽象级别有关。在得到答案之前,我认为值得问:
static 是多少代码?换句话说,您所引用的作品随着时间的推移会发生变化,无论是在逻辑还是在计划中需要运行?
基于这个问题,我认为无论使用什么框架/库,都应该尊重一件事:
任务的逻辑应该不与调度方面交错。
因此,使用Spring或任何其他调度库的第一个副作用是,除了计划和运行它之外,还为任务提供了单独的抽象。
因此,只要存在关注点和所需抽象的分离,我认为不使用任何特定的库是可以的。另一方面,例如,如果没有使用Spring DI来运行任务,那么可以再次认为使用Spring并不是必需的。
根据我对这个问题的理解,我建议至少使用Java的Timer抽象,如果Spring对这个问题看起来太多了。