@Required属性检查了一个bean而不是另一个bean

时间:2011-08-24 11:54:32

标签: java spring

我有一个bean Config,它有一个必需的setter。但是,当我没有在bean配置文件中设置设置时,我没有得到关于缺失属性的异常。

public class Config extends MatchSet{
   ...
   @Required
   public void setSections(List<Section> section){...}
}

public class OtherClass{
   ...
   @Required
   public void setMatchSets(List<MatchSet> sets){...}
}

public interface MatchSet{...}

如果我不包含matchSets的{​​{1}}字段,我会收到BeanInitializationException。但是如果我没有设置OtherClass的{​​{1}}字段,我就不会得到例外。我将sections的实例作为传递给Config的{​​{1}}列表的其中一个元素传递。

我使用单元测试(SpringJUnit4ClassRunner)并使用我的main(ClassPathXmlApplicationContext)尝试了这个,并且在任何一种情况下行为都是相同的。

为什么没有为Config检查@Required属性?是因为它是作为MatchSet传递的吗?

由于

1 个答案:

答案 0 :(得分:0)

原来这是由不同的问题引起的。我没有正确设置getter / setter。首先,这是因为我试图设置方法链,因此没有从setter返回null。另外,我在设置中接受了List,但是从getter返回ImmutableList。该组合导致Spring无法识别setter,因此无法检查