Utility class in Spring application - should I use static methods or not?

前端 未结 3 1405
北海茫月
北海茫月 2021-01-30 12:23

Let\'s say I have a utility class DateUtil (see below). To use this method a caller method uses DateUtils.getDateAsString(aDate). Would it be better to remove the static modifie

相关标签:
3条回答
  • 2021-01-30 13:01

    I don't think so. A DateUtils class sounds like a pure utility class that doesn't have any side effects but just processes input parameters. That kind of functionality may as well remain in a static method. I don't think it's very likely that you'll want to mock date helper methods.

    0 讨论(0)
  • 2021-01-30 13:08

    It would be better to declare it as a Spring bean because the life cycle of it is then managed by Spring, and you can eventually inject dependencies, pool the object, as well as test it in a proper way, not to talk that you could use it as a regular object and pass it as parameter, redefine the method in subclasses... etc.

    In short, yes it would be a better design in most cases. Nevertheless, in a case as simple as the exposed, it doesn't do a great difference.

    0 讨论(0)
  • 2021-01-30 13:12

    I agree with Sean Patrick Floyd.

    This is my criterion: if the methods of the class do things only over the parameters they receive, with no external dependencies (database, file system, user config, other objects/beans, etc.), then I would do it with static methods, usually in a final class with a private constructor.

    Otherwise, I would implement it using a Spring bean.

    So, in the case that you raise, according to this criterion, I would write a class with static methods.

    Regards.

    0 讨论(0)
提交回复
热议问题