1.若MyBean有连个构造器:MyBean(String, int)
MyBean(int, String)xml如下配置:<bean id="mybean"  class="MyBean">
    <construtor-arg value="3">
    <construtor-arg value="4">
</bean>那么,spring怎么判断调用哪个构造器呢?
2.用工厂函数获取bean时,xml配置如下:<bean id="mybean" class="MyBean"  factory-method="getInstance" />这里getInstance()是没有参数的。如果getInstance()有参数,xml该如何配置?

解决方案 »

  1.   

    构造函数那里加上index就可以了,有歧义的东西Spring自己也判断不了,要你去手动的明确指定
      

  2.   

    spring所有参数均默认解析为字符串,所以你的默认匹配为MyBean(String, int)在spring中如果方法有参数配置如下:
    <bean id="mybean" class="MyBean" factory-method="getInstance">
    <construtor-arg value="param1">
    <construtor-arg value="param2">
    .......
    <construtor-arg value="param n">
    </bean>
    很久没有搞这个了看看是否正确
      

  3.   

    好吧,我看了这个链接懂了一些:http://www.iteye.com/problems/2874
    <bean id="constructorConfusion" class="com.alpha.spring.ch4.ConstructorConfusion">
    <constructor-arg index="0" type="java.lang.String">
    <value>hello world</value>
    </constructor-arg>
    <constructor-arg index="1" type="int">
    <value>20</value>
    </constructor-arg>
    </bean>
      

  4.   

    是的。用type="java.lang.String"这个来解决。
      

  5.   

    http://www.iteye.com/problems/2874
    ding顶