我有以下代码
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依赖注入
答案 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>