Spring 与否 Spring:我们应该在具有静态方法的类上创建 @Component 吗?

Myc*_*haL 11 java spring

我有一个包“Utils”,其中有很多类。其中一些只是一些具有静态方法的类,另一些是一些单例,我在构造函数中传递一些参数(使用 @Value 以便通过注释替换基本 XML 配置)。

我在 ApplicationContext 中有一个配置来扫描包。

所以,我的问题是:对于具有静态方法的类,我们是否应该使用 @Component 注释来转换它们以获得单例(仍然具有静态方法),或者我们应该让它们处于这种状态而不由 Spring 管理它们?

谢谢

Zut*_*tty 3

如果它有任何类型的状态需要维护,或者有任何协作者,那么就创建一个 Spring 组件。如果您需要的功能是无状态的并且不依赖于它调用的任何其他方法的状态,则将其设为静态。

例如,在我的应用程序中,我有一个静态 util 方法,该方法将整数限制在最小值和最大值之间,但是返回当前日期的 Spring bean...

@Service
public class DateServiceImpl implements DateService {
    @Override
    public Date getCurrentDate() {
        return Calendar.getInstance().getTime();
    }
}
Run Code Online (Sandbox Code Playgroud)

为什么?因为现在我可以对使用当前日期的代码进行单元测试。