Spring笔记:解决构造器歧义
若使用构造器注入,则需要注意配置时指明指定参数的类型和索引。
比如有两个构造器,若在配置的时候不指明参数类型和参数索引,则spring会默认找到它认为合适的构造函数,而这往往不是我们所期望的:
private String prefix; //前缀 private String suffix; //后缀 private int initial; //初始 private int counter; //构造函数1 public SequenceGenerator(String prefix,String suffix){ this.prefix = prefix; this.suffix = suffix; } //构造函数2 public SequenceGenerator(String prefix,int initial){ this.prefix = prefix; this.initial = initial; }
配置Bean时指明type和index,就不容易导致歧义了:
<bean id="sequenceGenerator" class="chapter3_2.SequenceGenerator">
<constructor-arg value="p" type="java.lang.String" index="0" /> <constructor-arg value="10" type="int" index="1"/> <property name="suffix" value="A" />
</bean>