在Spring配置中初始化空arraylists?

时间:2012-03-12 08:17:57

标签: java spring java-ee

我正在学习Spring,并且我阅读了Spring in Action一书。我想知道你是否应该注入一个空的arraylist(如果可能)或者像下面的例子那样创建它?

public class StackOverflow {

    private List<Car> cars;

    public StackOverflow() {
        cars = new ArrayList<Car>();
    }
}

4 个答案:

答案 0 :(得分:4)

你可以注入一个这样的空列表,但这可能是不必要的,除非你试图设置一个示例模板spring XML配置。

<property name="cars">
  <list></list>
</property>

如果您想快速设置空列表以防止空指针问题,那么只需使用Collections.emptyList()。您也可以按照以下方式“内联”。请注意,Collections.emptyList()返回一个不可修改的列表。

public class StackOverflow {

    private List<Car> cars = Collections.emptyList();

您还需要汽车的getter和setter才能从spring XML中使用它。

答案 1 :(得分:1)

你可以这样做

<util:list id="emptyList"
           value-type="Cars">
</util:list>

有点像

public static interface Car
{
   String getName();
}

答案 2 :(得分:1)

我遇到this answer的问题。我猜Spring在你打开一个集合时会抱怨,但是不要在该帖子的示例中添加任何项目。如果这不起作用,请尝试以下方法。这对util:set来说很有用。

<util:list id="emptyList" value-type="Cars"/>

答案 3 :(得分:-1)

只要您的类(在本例中为StackOverflow)通过Spring实例化,您就可以使用自动装配来注入Spring管理的所有Car类型:

@Autowire
private List<Car> cars;