私はSpringを試しています、私は本をフォローしています:Spring:開発者のノートブック。このエラーが発生します:
"Bean property 'storeName' is not writable or has an invalid setter method. Does the parameter type of the setter match the return type of the getter?"
..そして私はかなり迷っています。
ArrayListRentABike
を実装するRentABike
クラスがあります。
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
コンストラクターに渡されたパラメーターはstoreName
を初期化するため、constructor-arg
要素を使用してstoreName
を設定できます。
<bean id="rentaBike" class="ArrayListRentABike">
<constructor-arg value="Bruce's Bikes"/>
</bean>
constructor-arg
要素を使用すると、Spring Beanのコンストラクター(サプライズ、サプライズ)にパラメーターを渡すことができます。
セッターインジェクションを使用していますが、属性storeName
にセッターが定義されていません。 storeName
のセッター/ゲッターを追加するか、コンストラクターインジェクションを使用します。
storeName
を入力として受け取るコンストラクターがすでに定義されているので、RentABike-context.xml
を次のように変更します。
<bean id="rentaBike" class="ArrayListRentABike">
<constructor-arg index="0"><value>Bruce's Bikes</value></constructor-arg>
</bean>
このエラーは、値ソリューションに定義されていないstoreNameが次の場所にあるために発生します。
<bean id="rentaBike" class="ArrayListRentABike">
<property name="storeName"><value>"Bruce's Bikes"</value></property>
</bean>