10

この質問は少し奇妙に思えるかもしれません。いくつかの静的メソッドを持つ Utility クラスで使用したい Service があるとします。Service は Spring Bean であるため、当然、たとえばセッターと (@Autowired) を使用してユーティリティ クラスに注入します。Spring のドキュメントに記載されているように、すべての Bean は Bean コンテキストで静的です。したがって、クラスに Bean を注入する場合は、「静的」修飾子を使用する必要はありません。下記参照:


public class JustAClass{
  private Service service;

  public void aMethod(){
     service.doSomething(....);
  }

  @Autowired
  public void setService(Service service){
     this.service = service;
  }

}

ここで、最初に述べたこと (静的メソッドでのサービスの使用) に戻ります。


public class JustAClass{
  private static Service service;

  public static void aMethod(){
     service.doSomething(....);
  }

  @Autowired
  public void setService(Service service){
     this.service = service;
  }

}

Service は static ですが、その定義の背後に static を置くことを余儀なくされています。これは私にとって少し直感に反しています。これは間違っていますか?またはそれはより良い方法ですか?ありがとう

4

2 に答える 2