Java Spring依赖注入与实用程序的静态类?

Java Spring依赖注入与实用程序的静态类?,java,spring,dependency-injection,Java,Spring,Dependency Injection,在Spring应用程序中,如果我想在整个项目中使用实用方法,我应该在实用类中使用静态方法还是在Autowired@组件中使用静态方法 例如,我可以有一个带有 public static int add(int a, int b){...} 或者我可以有一个类似这样的CalculatorComponent.class并自动连接它: @Component public class CalculatorComponent { public int add(int a, int b){...}} 我

在Spring应用程序中,如果我想在整个项目中使用实用方法,我应该在实用类中使用静态方法还是在Autowired@组件中使用静态方法

例如,我可以有一个带有

public static int add(int a, int b){...}
或者我可以有一个类似这样的CalculatorComponent.class并自动连接它:

@Component
public class CalculatorComponent {
public int add(int a, int b){...}}

我假设计算器不需要任何依赖项。我在想,如果将来需要添加依赖项,自动布线可能会更灵活,而静态布线则更简单。对此有指导原则吗?

您是对的,实用程序类中的静态方法不能使用任何Spring依赖项。因此,如果您的方法可能需要另一个类,或者您可能会添加额外的函数性,那么您应该使用Spring@Component


如果方法非常简单且没有状态行为,则可以使用静态类。例如,使用System.out.println将始终将某些内容打印到系统的当前打印流中,而没有任何状态或其他行为。

在我看来,鉴于您已经在使用Spring,问题是您为什么不想自动连线?我发现,与使用实例相比,使用静态方法更容易受到攻击。