简体   繁体   English

如何使用工厂方法返回创建类型为string bean的arraylist

[英]How to create a arraylist of type string bean with a factory method return

I have a method in a class that returns a ArrayList, and I want to use this return to create a bean like this: 我在类中有一个返回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>

But when I try to ref this bean from another bean IntelliJ complains that: 但是,当我尝试从另一个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)

What exactly am I doing wrong here? 我到底在做什么错?

..as mentioned in comment, you must ensure the "factory-method" takes no arguments: ..如评论中所述,您必须确保“工厂方法”不包含任何参数:

package foo.bar;
...
public class MyClass {
  ...
  public List<String> getMyList() {
    //maybe rather a copy than the original ;)
    return daList;
  }
...

Given eg a 1-String constuctor: 给定一个1-String构造函数:

...
  public MyClass(String one) {
    daList = new ArrayList<>();
    daList.add(one); 
  }
...
}

...and a the constant String com.myapp.searchapp.MY_VALUE you could wire it all like: ...以及一个常量字符串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 - the top googl-hit on "spring factory method" 在这里 -热门搜索“弹簧工厂方法”

... here - a popular, related & maybe helpful question. ... 这里 -一个受欢迎,相关且可能有用的问题。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM