我有那个方法,它放在服务类中,但是我想将它移到另一个类中,例如实用程序类。然后,这是使用此方法的最佳方法:
Utils.check(first, second);
或
@Autowired
Utils utils;
utils.check(first, second);
方法:
public static <T> T check(T first, T second) {
return first == null ? second : first;
}
答案 0 :(得分:1)
Spring将为您的类生成一个代理,并可能将您的方法调用包装到一个事务中(因为它是public
方法)。对于这种简单的方法而言,这将导致过多的重载,而这种情况不会利用任何自动装配的依赖项。坚持您的Util
类,尽管您应该给事物起一个有意义的名称。
我建议使用Args
类进行参数验证,其方法名称类似requireNonNullOrElse(T object, T objectIfNull)
,实际上与Optional.ofNullable(object).orElse(objectIfNull)
相同。
答案 1 :(得分:1)
静态方法可能是更好的解决方案。 第一次使用此类时,此方法将被加载到内存中。因此您无法控制生命周期。
@Autowired解决方案在其他情况下将易于使用。例如: 1.如果要在单元测试中模拟此方法。 2.如果要通过spring范围控制生命周期。