我有一个场景,我需要将值注入(inject)到没有 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 类,因为它是外部供应商提供的类,并且我无法对其进行构造函数注入(inject),因为向其添加值的唯一方法是通过以下方式:
POC poc=new POC();
poc.getBeheaviour().add("some Stuff")
最佳答案
您可以编写一个自定义 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>
关于java - 基本的 spring 依赖注入(inject)问题,没有 setter 只有 getter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6101801/