この質問は少し奇妙に思えるかもしれません。いくつかの静的メソッドを持つ 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 を置くことを余儀なくされています。これは私にとって少し直感に反しています。これは間違っていますか?またはそれはより良い方法ですか?ありがとう