如何将具有多个变量的构造函数的依赖项注入到 spring xml?



>我创建了一个测试类。我需要使用 spring 依赖注入运行测试文件。我正在使用XML方法。

如何在 XML 配置中为库存定义 Bean?

测试文件构造函数:

public VendingMachineServiceLayerImplTest() {
Inventory testItem = new Inventory(2);
testItem.setItemName("Item2");
testItem.setCost(new BigDecimal("4.50"));
testItem.setNoOfItems(0);
VendingMachineDao dao = new VendingMachineDaoStubImpl(testItem);
VendingMachineAuditDao auditDao = new VendingMachineAuditDaoStubImpl();
VendingMachineChange change = new VendingMachineChange();
service = new VendingMachineServiceLayerImpl(dao, auditDao, change);
}

应用程序上下文中的 Bean 定义.xml

<bean id="dao" 
class="mthree.vendingmachine.dao.VendingMachineDaoFileImpl"/>

<bean id="daoStub" 
class="vendingmachine.dao.VendingMachineDaoStubImpl"/>

<bean id="change" 
class="vendingmachine.dao.VendingMachineAuditDaoStubImpl"/>
<bean id="change" class="vendingmachine.dao.VendingMachineChange"/>

<bean id="serviceLayer" 
class="vendingmachine.service.VendingMachineServiceLayerImpl">
<constructor-arg ref="dao"/>
<constructor-arg ref="auditDaoStub"/>  
<constructor-arg ref="change"/>           
</bean>

库存类

public class Inventory {
private int itemNumber;
private String itemName;
private BigDecimal cost;
private int noOfItems;

public Inventory(int itemNumber){
this.itemNumber=itemNumber;
}

public int getItemNumber() {
return itemNumber;
}
//other getters and setters
}

如何将对象注入构造函数?我尝试添加属性,但由于属性无法解析而发生测试错误。

提前致谢

需要在<constructor-arg>标记中包含构造函数中的值,并在Inventory Class中包含<property>标记中的其他属性,如下所示。

<bean id="daoStub" 
class="mthree.vendingmachine.dao.VendingMachineDaoStubImpl"/>

<bean id="auditDaoStub" 
class="mthree.vendingmachine.dao.VendingMachineAuditDaoStubImpl"/>

<bean id="change" class="mthree.vendingmachine.service.VendingMachineChange"/>


<bean id="inventory" class="vendingmachine.dto.Inventory">
<constructor-arg name = "itemNumber" value = "2"/>
<property name = "itemName" value = "Item2"/>
<property name = "cost" value = "5"/>
<property name = "noOfItems" value = "0"/>
</bean>

<bean id="dao" class="vendingmachine.dao.VendingMachineDaoStubImpl"> 
<constructor-arg ref = "inventory"/> 
</bean>

<bean id="serviceLayer" 
class="vendingmachine.service.VendingMachineServiceLayerImpl">
<constructor-arg ref="dao"/>
<constructor-arg ref="auditDaoStub"/>  
<constructor-arg ref="change"/>           
</bean>

最新更新