groovy + Spring以不同的顺序添加列表会抛出NotWritablePropertyException

时间:2012-06-08 03:02:38

标签: spring groovy

我正在尝试将Groovy与Spring集成。 在一个bean中,我需要将列表作为属性放入 但是,只有在bean定义之前在列表中定义项目时才有效。

为了避免将来出现错误......我想问一下编译上下文并导致错误的机制是什么?

Item.groovy是一个带有字符串itemName

的简单bean

我的配置就像

不会工作的

<lang:groovy id="handler" script-source="ItemHandlerImpl.groovy">
  <lang:property name="itemList">
    <list>
      <lang:groovy id="item1" script-source="Item.groovy">
        <lang:property name="itemName" value="name1" />
      </lang:groovy>
    </list>
  </lang:property>
</lang:groovy>

抛出

Caused by: org.springframework.beans.NotWritablePropertyException: Invalid property 'itemName' of bean class [org.springframework.scripting.groovy.GroovyScriptFactory]: Bean property 'itemName' is not writable or has an invalid setter method. Does the parameter type of the setter match the return type of the getter?
            at org.springframework.beans.BeanWrapperImpl.setPropertyValue(BeanWrapperImpl.java:1024)
                at org.springframework.beans.BeanWrapperImpl.setPropertyValue(BeanWrapperImpl.java:900)
                at org.springframework.beans.AbstractPropertyAccessor.setPropertyValues(AbstractPropertyAccessor.java:76)
                at org.springframework.beans.AbstractPropertyAccessor.setPropertyValues(AbstractPropertyAccessor.java:58)
                at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1358)
                ... 70 more

经过多次尝试,这是我的工作配置

<lang:groovy id="item1" script-source="Item.groovy">
  <lang:property name="itemName" value="name1" />
</lang:groovy>

<lang:groovy id="handler" script-source="ItemHandlerImpl.groovy">
  <lang:property name="itemList">
    <list>
      <ref bean ="item1">
    </list>
  </lang:property>
</lang:groovy>

0 个答案:

没有答案