我有一个包“Utils”,我有很多课程。其中一些只是一些使用静态方法的类,另一些是一些单例,我在构造函数中传递一些参数(使用@Value以便通过注释替换基本的XML配置)。
我在ApplicationContext中有一个配置来扫描包。
所以,我的问题是:对于使用静态方法的类,我们应该使用@Component注释来转换它们以便拥有一个单例(仍然使用静态方法),还是应该让它们处于这种状态而不用Spring管理它们?
谢谢
答案 0 :(得分:1)
如果要维护任何类型的状态,或者任何协作者则创建一个Spring组件。如果您需要的功能是无状态的,并且不依赖于它调用的任何其他方法的状态,那么将其设置为静态。
例如在我的应用程序中,我有一个静态的util方法,可以在最小值和最大值之间夹住整数,但是一个返回当前日期的Spring bean ......
@Service
public class DateServiceImpl implements DateService {
@Override
public Date getCurrentDate() {
return Calendar.getInstance().getTime();
}
}
为什么呢?因为现在我可以对使用当前日期的代码进行单元测试。