基本的弹簧依赖注入问题,就是没有吸气剂就没有吸气剂

|| 我有一种情况,我需要在没有setter的类中将值注入到Arraylist中,在这种情况下,我需要在POC类中的列表上进行获取,然后执行添加:
public class POC {
  private  ArrayList<String> beheaviour=new ArrayList<String>();

  public ArrayList<String> getBeheaviour() {
    return beheaviour;
  }
}
这是xml映射代码:
<bean id=\"poc\" class=\"outBoundocument.factory.POC\">
  <property name=\"beheaviour\">
    <list>
      <value>temp1</value>
      <value>temp2</value>
      <value>temp3</value>
      <value>temp4</value>
      <value>temp5</value>
    </list>
  </property>   
</bean>
以下代码返回: 设置属性值时出错;嵌套的异常是org.springframework.beans.NotWritablePropertyException:Bean类[outBoundocument.factory.POC]的无效属性\'beheaviour \':Bean属性\'beheaviour \'是不可写的或无效的setter方法。 setter的参数类型是否与getter的返回类型匹配? 我无法控制POC类,因为它是外部供应商提供的类,并且我无法对其进行构造函数注入,因为向其添加值的唯一方法是以下方式:
POC poc=new POC();
poc.getBeheaviour().add(\"some Stuff\")
    
已邀请:
据我所知,Spring将无法在这里为您提供帮助(如果您无法访问代码)。如果您以XML定义Spring,则仅允许您将封闭源类作为Bean使用,这反过来使得无法进行属性注入。 如果您不依赖于Spring,则可以使用Java Reflection做您需要的事情。 更新 抱歉,您似乎可以通过XML自动装配。在这里看看。     
您可以编写一个自定义FactoryBean来添加项目。 在Java中是这样的:
public class POCFactoryBean implements FactoryBean<POC> {
    private POC poc = new POC();    
    public void setBeheavior(List<String> items) {
        poc.getBehavior().addAll(items);
    }
    public POC getObject() {  
        return poc;
    }
    public Class<?> getObjectType() {   
        POC.class;
    }
    public boolean isSingleton() {
        return true;
    }
}
对应的XML:
<bean id=\"poc\" class=\"some.package.POCFactoryBean\">
  <property name=\"beheaviour\">
    <list>
      <value>temp1</value>
      <value>temp2</value>
      <value>temp3</value>
      <value>temp4</value>
      <value>temp5</value>
    </list>
  </property>   
</bean>
    

要回复问题请先登录注册