执行以下代码时,我遇到以下错误。
我的课程名称如下所示。
class Dad.java
package TestingDependecy;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Dad {
private Mom mom;
private Child child;
public Dad (Mom mom) {
this.mom = mom;
}
public Dad (Child child) {
this.child = child;
}
public void name() throws IOException {
System.out.println("please enter a name ..");
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String name = br.readLine();
System.out.println("Please confirm your deatails below");
System.out.println("Your name is "+ name);
}
public void whichWork() {
mom.cooking();
}
public void mainWork() {
System.out.println("Don't distrub me Please...!!");
child.main();
}
}

类Mom.java
package TestingDependecy;
public class Mom {
public void cooking() {
System.out.println("I am cooking ");
System.out.println(" what else i can do ?");
}
}

Class Child
package TestingDependecy;
public class Child {
public void main() {
System.out.println("This is from child class");
}
}

Class Family.java
package TestingDependecy;
import java.io.IOException;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import TestingDependecy.Dad;
public class Family {
public static void main(String[] args) throws IOException {
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("ApplicationContext.xml");
Dad d = context.getBean("dad", Dad.class);
d.mainWork();
System.out.println();
d.whichWork();
context.close();
}
}

最后我的ApplicationContext.xml文件如下
的applicationContext.xml
<?xml version = "1.0" encoding = "UTF-8"?>
<beans xmlns = "http://www.springframework.org/schema/beans"
xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation = "http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
<!-- This is for family Package -->
<bean id = "mom"
class="TestingDependecy.Mom">
</bean>
<bean id = "child"
class="TestingDependecy.Child">
</bean>
<bean id = "dad"
class="TestingDependecy.Dad">
<constructor-arg ref="mom"/>
<constructor-arg ref="child"/>
</bean>
&#13;
我在执行代码时得到以下内容。
请在下面找到错误。
May 04, 2018 8:45:02 AM org.springframework.context.support.AbstractApplicationContext prepareRefresh
INFO: Refreshing org.springframework.context.support.ClassPathXmlApplicationContext@1a1cd57: startup date [Fri May 04 08:45:01 IST 2018]; root of context hierarchy
May 04, 2018 8:45:02 AM org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions
INFO: Loading XML bean definitions from class path resource [ApplicationContext.xml]
May 04, 2018 8:45:02 AM org.springframework.context.support.AbstractApplicationContext refresh
WARNING: Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'dad' defined in class path resource [ApplicationContext.xml]: Could not resolve matching constructor (hint: specify index/type/name arguments for simple parameters to avoid type ambiguities)
Exception in thread "main" org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'dad' defined in class path resource [ApplicationContext.xml]: Could not resolve matching constructor (hint: specify index/type/name arguments for simple parameters to avoid type ambiguities)
at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:243)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1270)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1127)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:541)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:501)
at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:317)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:228)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:315)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:760)
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:869)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:550)
at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:144)
at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:85)
at TestingDependecy.Family.main(Family.java:13)
&#13;
请帮帮我,我在这里犯了什么错误?
此致 Saikiran。
答案 0 :(得分:1)
在ApplicationContext.xml
中,您已将两个参数传递给dad
bean的构造函数:
<bean id = "dad"
class="TestingDependecy.Dad">
<constructor-arg ref="mom"/>
<constructor-arg ref="child"/>
</bean>
所以你必须在Dad
类中定义一个双参数构造函数,如下所示:
public class Dad {
private Mom mom;
private Child child;
public Dad (Mom mom, Child child) {
this.mom = mom;
this.child = child;
}
...
}
答案 1 :(得分:0)
注意 全部保留一个构造函数和相应的bean构造函数类
<bean id="e" class="com.test.Employee">
<constructor-arg value="12" type="int"></constructor-arg>
<constructor-arg value="UP"></constructor-arg>
<constructor-arg> <ref bean="a1"/> </constructor-arg >
<constructor-arg> <ref bean="company"/> </constructor-arg>
</bean>
public Employee(int idx, String name, Address address, Company company) {
this.idx=idx;
this.name=name;
this.address=address;
this.company=company;
}