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;
  }
}

现在我从我的 Action 对象调用 CustomerService.getAllCustomers(),其中 getAllCustomers 是类级别的方法。我希望在 CustomerService 类中由 spring 注入 customerDao 以便当我调用 getAllCustomers 依赖项时可用?

我正在使用spring decalarative依赖注入

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 回答