【问题标题】: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;