【问题标题】:Initialize empty arraylists in Spring configuration?在 Spring 配置中初始化空数组列表?
【发布时间】:2012-03-12 08:17:56
【问题描述】:

我正在学习 Spring,并阅读了 Spring in Action 一书。我想知道您是否应该注入一个空的数组列表(如果可能的话)还是像下面的示例一样创建它?

public class StackOverflow {

    private List<Car> cars;

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

【问题讨论】:

  • 您可以使用“问题”而不是“汽车”变量。 :)

标签: java spring jakarta-ee


【解决方案1】:

您可以像这样注入一个空列表,但这可能是不必要的,除非您尝试设置示例模板 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 中使用它。

【讨论】:

    【解决方案2】:

    你可以这样做

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

    With 类似于

    public static interface Car
    {
       String getName();
    }
    

    【讨论】:

      【解决方案3】:

      this answer 有问题。我猜当您打开一个集合时 Spring 会抱怨,但不要像该帖子中的示例中给出的那样在其中添加任何项目。如果这不起作用,请尝试以下方法。 util:set 对我有用。

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

      【讨论】:

        【解决方案4】:

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

        @Autowire
        private List<Car> cars;
        

        【讨论】:

        猜你喜欢
        • 2023-03-13
        • 2011-06-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-02-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多