5

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

我在 ApplicationContext 中有一个配置,以便扫描包。

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

谢谢你

4

1 回答 1

2

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

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

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

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

于 2012-12-06T14:57:04.297 回答