4

java.util.Propertiesのインスタンスを除くすべてのSpring自動配線を正常に構成しました。

他のすべてを注釈付きで自動配線すると、次のようになります。

@Autowired private SomeObject someObject;

それはうまく機能します。

しかし、私がこれを試してみると:

@Autowired private Properties messages;

この構成では:

<bean id="mybean" class="com.foo.MyBean" >
  <property name="messages">
    <util:properties location="classpath:messages.properties"/>
  </property>
</bean>

エラーが発生します(関連行のみ):

Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'mybean' defined in class path resource [application.xml]: Error setting property values; nested exception is org.springframework.beans.NotWritablePropertyException: Invalid property 'messages' of bean class [com.foo.MyBean]: Bean property 'messages' is not writable or has an invalid setter method. Does the parameter type of the setter match the return type of the getter?

Wheras、古き良きセッター方式で試してみると、Springはそれを非常に喜んで配線します。

public void setMessages(Properties p) {   //this works
  this.messages = p;
}

プロパティオブジェクトを自動配線しようとすると、何が間違っていますか?

4

1 に答える 1