0

静的効用関数がほとんどないクラスがあります。

Beanを作成せずに、静的フィールドであるプロパティ値<<を挿入したい>>。

@Component
class TestUtils {

 @Value("${toke.value}")
 public static String token;

 public static String doOperation(String value) {
   .... do some operation using toke
   return result;
 }

 public static void setToken(String token ) {
  TestUtils.token = token;
 }
}

このクラスのオブジェクトを作成することはありません。メソッドが呼び出されます

TestUtils.doOperation(parms);

アプリケーションの起動時に、この値のプロパティを設定する方法があるかどうかを知りたいだけです。

ありがとう。

4

1 に答える 1

1

しないでください。メソッドを静的メソッドではなくインスタンスメソッドにします。フィールドをパブリック静的フィールドではなくプライベートインスタンスフィールドにし、メソッドを呼び出すためにアクセスする必要がある場所にBeanのインスタンスを挿入します。それが依存性注入の要点です。

Spring Beanはデフォルトでシングルトンであるため、JVMにそのようなフィールドが複数存在することはありません。また、インスタンスメソッドとインジェクタブルコンポーネントを作成すると、それを使用するコードがテスト可能になります。これは、静的メソッドの場合とは異なります。

于 2012-12-15T12:48:24.327 に答える