如何用spring注入静态方法中的依赖?

时间:2012-12-11 10:21:13

标签: java spring dependency-injection static-methods

  

可能重复:
  How to make spring inject value into a static field

我有以下代码

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依赖注入

2 个答案:

答案 0 :(得分:3)

您的设计正面碰撞Spring IoC的基本前提。 static方法只不过是一个单例方法,而IoC容器的核心点是管理你的单例。您必须重新设计以使用实例方法和字段。

static方法进入图片的唯一方法是作为工厂方法,当需要一些复杂的逻辑来向容器提供单例时。

答案 1 :(得分: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>