依赖关系注入和静态方法



我想知道如何使静态方法与依赖注入一起工作。
例如:

public class Util {
Main main;
public Util(Main main) { this.main = main }
public static void showMessage() {
System.out.println("message = " + main.messageMethod());
}
} 

这就是我想做的,但是如果我在从其他类调用方法时以这种方式这样做,例如Util.showMessage();它会告诉我 main 为 null。
我正在寻找如何使其正常工作,因为在该类的每个静态方法上DI会有点烦人。

您需要将 Main 传递给静态方法:

public static void showMessage(final Main main) {
System.out.println("message = " + main.messageMethod());
}

编写实用程序类的最佳实践:

  1. 实用程序类/方法必须是无状态的。实用程序类不应具有成员。实用工具方法应接受所有必需的变量作为参数。可以从并发环境中的多个线程调用实用程序类。可变成员变量使类不安全,并在并发环境中产生令人讨厌的错误
  2. 不应
  3. 实例化实用工具方法,也不应注入实用工具方法。它们应该有私有构造函数。
  4. 实用程序类应该是最终的(不可扩展(。

将这些规则应用于实用程序类后,它将如下所示:

public final class Util {
private Util();
public static void showMessage(final Main main) {
System.out.println("message = " + main.messageMethod());
}
}

这个类是最终的(不能扩展(,有私有构造函数(不能实例化或注入(,无状态(没有成员,线程安全的,如果方法显示它没有改变主变量的状态(。

最新更新