2

重複の可能性:
春に静的フィールドに値を注入させる方法

以下のコードがあります

public class CustomerService {

  private static CustomerDAO customerDao;

  public static void getAllCustomers()
  {
    customerDao.getAllCustomers();// here i want 
  }

      public static CustomerDAO getCustomerDao() {
    return customerDao;
  }

  public static void setCustomerDao(CustomerDAO customerDao) {
    CustomerService.customerDao = customerDao;
  }
}

今、getAllCustomers がクラス レベルのメソッドである Action オブジェクトから CustomerService.getAllCustomers() を呼び出しています。getAllCustomers を呼び出したときに依存関係が利用できるように、CustomerService クラスの spring によって customerDao を注入したいですか?

春の宣言的依存性注入を使用しています

4

2 に答える 2

3

あなたの設計は、Spring IoC の基本的な前提と正面から衝突します。staticメソッドはシングルトン メソッドにすぎません。IoC コンテナーの要点は、シングルトンを管理することです。インスタンス メソッドとフィールドを使用するには、再設計する必要があります。

staticメソッドが全体像に入る唯一の方法は、コンテナにシングルトンを提供するためにいくつかの複雑なロジックが必要な場合にファクトリ メソッドとして使用することです。

于 2012-12-11T10:33:05.087 に答える
0

customerDao フィールドを宣言しないでくださいstatic。次に、顧客の dao を次のようにサービス クラスに接続します。

<bean id="customerDao" class="com.example.CustomerDao">
    <!-- whatever config you may need here -->
</bean>

<bean id="customerService" class="com.example.CustomerSerivce">
    <property name="" ref="customerDao"/>
</bean>
于 2012-12-11T10:26:49.387 に答える