【问题标题】:Error creating bean in Spring在 Spring 中创建 bean 时出错
【发布时间】:2015-05-28 17:54:55
【问题描述】:

大家好,我是春季的初学者,我刚开始。 我收到一个错误

" 在类路径资源 [org/collection/ApplicationContext2.xml] 中创建名称为 'question' 的 bean 时出错:指定了 3 个构造函数参数,但在 bean 'question' 中找不到匹配的构造函数(提示:指定索引/类型/名称简单参数的参数以避免类型歧义)"

我有两个类,第一个是包含单个构造函数 Question 的 Question,第二个是 Answer

我正在尝试创建答案类的引用并插入到具有数组列表的问题类中

我看了一下,发现我需要指定类型。 我已经指定了它,但我仍然收到错误

谢谢..

Question.java

package org.collection;

import java.awt.List;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.Iterator;



public class Question {
    private int id;
    private String name;
    private ArrayList<String> answers;
    //private HashSet<String> answers1;

    public Question()
    {
        //Default constructor
    }

    public Question(int id,String name,ArrayList<String> answers)
    {
        super();
        this.id=id;
        this.name=name;
        this.answers=answers;

    }

    public void display()
    {
        System.out.println("Id :"+id+"\nName :"+name);
        System.out.println("Answers are");
        Iterator<String> itr= answers.iterator();  
        while(itr.hasNext())
        {
            System.out.println(itr.next());
        }

        /*System.out.println("----------picking up the answers from HashSet---------");
         Iterator<String> itr1=answers1.iterator();
         while(itr1.hasNext())
         {
             System.out.println(itr1.next());
         }
         System.out.println("-------reached-----------");*/



    }

}

Answer.java

package org.collection;

public class Answer {
    private int id;
    private String name;
    private String by;

    public Answer() {
        // TODO Auto-generated constructor stub
    }

    public Answer(int id,String name,String by)
    {
        super();
        this.id=id;
        this.name=name;
        this.by=by;

    }

    public String toString()
    {
        return "ID :"+id+"\nName"+name+"\nBy :"+by;
    }
}

ApplicationContext.xml2

<?xml version="1.0" encoding="UTF-8"?>

<beans
 xmlns="http://www.springframework.org/schema/beans"  
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
    xmlns:p="http://www.springframework.org/schema/p"  
    xsi:schemaLocation="http://www.springframework.org/schema/beans  
 http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
 

 <bean id="ans1" class="org.collection.Answer">
 <constructor-arg value="1" type="int"></constructor-arg>
 <constructor-arg value="java is a progamming language hahahaha"  type="java.lang.String"></constructor-arg>
 <constructor-arg value ="varun"  type="java.lang.String"> </constructor-arg>
 </bean>
 
 <bean id ="ans2" class="org.collection.Answer">
 <constructor-arg value="2" type="int"></constructor-arg>
 <constructor-arg value="java is a platfornm"  type="java.lang.String"></constructor-arg>
 <constructor-arg value ="Rahul"  type="java.lang.String"></constructor-arg>
 </bean>
  
 <bean id="question" class= "org.collection.Question">
 <constructor-arg value="111" type="int"></constructor-arg>
 <constructor-arg value="What is java ?" type="java.lang.String"></constructor-arg>
 <constructor-arg>
 <list>
 <ref bean="ans1"/>
<ref bean="ans2"/> 
 </list>
  </constructor-arg>
  </bean>
 </beans>

【问题讨论】:

  • 您遇到的错误是什么?
  • 作为“Rahul”和“varun”的类型,您需要指定完全限定的类名 (java.lang.String) 而不是 String。
  • @KarthikPrasad 创建类路径资源 [org/collection/ApplicationContext2.xml] 中定义的名称为“问题”的 bean 时出错:指定了 3 个构造函数参数,但在 bean“问题”中找不到匹配的构造函数(提示:为简单参数指定索引/类型/名称参数以避免类型歧义)
  • @ᴳᵁᴵᴰᴼ 评论的一个补充,type="int" 应该被删除
  • Karthik 我把它改成了,但我仍然遇到同样的错误,请帮助我,似乎每件事都是正确的,但我仍然收到错误

标签: java spring


【解决方案1】:

Question 中的三参数构造函数期望 ListString。但是,您正在传递 ListAnswer。将Question类中的第三个参数改为ArrayList&lt;Answer&gt; answers

【讨论】:

  • 伟大的@Mithun .....它工作.......你能建议我学习春天的来源
  • 去 youtube 搜索 Kaushik 的 spring....... 我建议所有的新手都看一下这个视频(即使是 Hibernate),一旦你完成了,你可以拿任何书从 apress 学习高级概念,例如 AOP、MVC 等
猜你喜欢
  • 2016-06-24
  • 2013-10-06
  • 2020-12-20
  • 2017-02-03
  • 2013-01-19
  • 2021-11-28
  • 1970-01-01
  • 2020-02-23
  • 2016-03-18
相关资源
最近更新 更多