我正在尝试Spring,我正在遵循这本书:Spring:A developer's notebook。我得到了这个错误:
第一个月
我完全迷失了方向
我有一个实现RentABike
的ArrayListRentABike
类:
import java.util.*;
public class ArrayListRentABike implements RentABike {
private String storeName;
final List bikes = new ArrayList( );
public ArrayListRentABike( ) { initBikes( ); }
public ArrayListRentABike(String storeName) {
this.storeName = storeName;
initBikes( );
}
public void initBikes( ) {
bikes.add(new Bike("Shimano", "Roadmaster", 20, "11111", 15, "Fair"));
bikes.add(new Bike("Cannondale", "F2000 XTR", 18, "22222", 12, "Excellent"));
bikes.add(new Bike("Trek", "6000", 19, "33333", 12.4, "Fair"));
}
public String toString( ) { return "RentABike: " + storeName; }
public List getBikes( ) { return bikes; }
public Bike getBike(String serialNo) {
Iterator iter = bikes.iterator( );
while(iter.hasNext( )) {
Bike bike = (Bike)iter.next( );
if(serialNo.equals(bike.getSerialNo( ))) return bike;
}
return null;
}
}
字符串
我的RentABike-context.xml
是这样的:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
"http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<bean id="rentaBike" class="ArrayListRentABike">
<property name="storeName"><value>"Bruce's Bikes"</value></property>
</bean>
<bean id="commandLineView" class="CommandLineView">
<property name="rentaBike"><ref bean="rentaBike"/></property>
</bean>
</beans>
型
有什么想法吗?非常感谢!Krt_Malta
4条答案
按热度按时间u5rb5r591#
您正在使用setter注入,但没有为属性
storeName
定义setter。请为storeName
添加setter/getter或使用构造函数注入。因为你已经定义了一个接受
storeName
作为输入的构造函数,所以我建议将RentABike-context.xml
修改为:字符串
tzxcd3kk2#
由于传递给构造函数的参数将初始化
storeName
,因此可以使用constructor-arg
元素来设置storeName
。字符串
constructor-arg
元素允许将参数传递给spring bean的构造函数(惊喜,惊喜)。mftmpeh83#
发生此错误的原因是没有为解决方案所在的值定义storeName:
字符串
4sup72z84#
在这种类型的错误上,有时还需要检查字段的访问修饰符,如果它是默认值,spring将抛出错误。setter的访问修饰符应该是public的,以便spring可以使用它来设置属性