回答:
静的フィールドを使用すると、静的メソッドの使用が促進されるためです。そして、静的メソッドは悪です。依存関係注入の主な目的は、コンテナがオブジェクトを作成してワイヤリングすることです。また、テストが容易になります。
静的メソッドの使用を開始すると、オブジェクトのインスタンスを作成する必要がなくなり、テストがはるかに困難になります。また、特定のクラスの複数のインスタンスを作成することはできません。それぞれに異なる依存関係が注入されます(フィールドが暗黙的に共有され、グローバルな状態を作成するため、悪です)。
@BeforeClass
SpringJUnit4ClassRunnerで使用し、そのメソッド@Autowired
にテストでBean にアクセスさせる場合は、基本的にできません。迷惑です。
クラスローダーが静的な値をロードするとき、Springコンテキストは必ずしもロードされていないためです。そのため、クラスローダーはBeanに静的フィールドを適切に挿入せず、失敗します。
OOPの概念によれば、静的変数が自動配線されていると、設計が悪くなります。
静的変数はオブジェクトのプロパティではありませんが、クラスのプロパティです。スプリングの自動配線はオブジェクトに対して行われるため、私の意見ではデザインがきれいになります。自動ワイヤードBeanオブジェクトをシングルトンとしてデプロイし、静的に定義するのと同じことを実現できます。
このソリューションにより、春に静的フィールドを自動配線できます。
@Component
public class TestClass {
private static Test test;
@Autowired
public void setTest(Test test) {
TestClass.test = test;
}
}