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

java, methods, spring, static

Solution

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.

Problem

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 modifier and make DateUtil a spring bean (see DateUtilsBean) and inject it into calling classes or just leave it as is? One disadvantage I can see with using static is issues around mocking, see How to mock with static methods? ``` public class DateUtils { public static String getDateAsString(Date date) { String retValue = "" // do something here using date parameter return retValue; } } ``` Spring Bean version ``` @Component public class DateUtilsBean { public String getDateAsString(Date date) { String retValue = "" // do something here using date parameter return retValue; } } ```

Original source

Related problems