0

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

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

Item.groovy 是一个带有字段 String 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>
4

0 回答 0