我在一个返回ArrayList的类中有一个方法,我想使用这个返回来创建一个像这样的bean:
<bean id="myList" factory-bean="myClass" factory-method="getMyList" class="java.util.ArrayList">
<constructor-arg index="0" type="java.lang.String">
<util:constant static-field="com.myapp.searchapp.MY_VALUE"/>
</constructor-arg>
</bean>
但是当我尝试从另一个bean引用这个bean时,IntelliJ抱怨说:
Bean must be one of these types: java.lang.String or java.util.ArrayList<java.lang.String> less... (Ctrl+F1)
Checks value types for Spring injections (properties & constructor arguments)
我到底错在了什么?
答案 0 :(得分:0)
..如评论中所述,您必须确保“factory-method”不带参数:
package foo.bar;
...
public class MyClass {
...
public List<String> getMyList() {
//maybe rather a copy than the original ;)
return daList;
}
...
例如1-String构造函数:
...
public MyClass(String one) {
daList = new ArrayList<>();
daList.add(one);
}
...
}
...和一个常量字符串com.myapp.searchapp.MY_VALUE
你可以把它连接起来:
<bean id="myClass" class="foo.bar.MyClass">
<constructor-arg index="0" type="java.lang.String">
<util:constant static-field="com.myapp.searchapp.MY_VALUE" />
</constructor-arg>
</bean>
<!-- and... -->
<bean id="myList" factory-bean="myClass" factory-method="getMyList" />
Here - “弹簧工厂方法”中的热门googl命中
... here - 一个受欢迎的,相关的&amp;也许有用的问题。