Dankbarkeit: Vielen Dank für Ihre Unterstützung.Spring löst nicht den entsprechenden Konstruktor
Problem Beschreibung:
- ich eine Ausnahme bin vor beim Versuch, den folgenden Code auszuführen. Habe keine Ahnung.
- So schreiben Sie die XML-Definition zum Initiieren der abhängigen Klasse mit @Autowired Constructor mit int-Parameter.
ExceptionMessage:
Exception in thread "main" org.springframework.beans.factory.BeanCreationException:
Error creating bean with name 'dependent' defined in class path
resource [simple-context.xml]:
Could not resolve matching constructor (hint: specify index/type/name arguments
for simple parameters to avoid type ambiguities)
Dateiname: feder context.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"
xmlns:c="http://www.springframework.org/schema/c"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd">
<context:component-scan base-package="com.learning.spring.constinjection" />
<bean id="dependency" class="com.learning.spring.constinjection.Dependency"></bean>
<bean id="dependent" class="com.learning.spring.constinjection.Dependent">
<constructor-arg ref="dependency" name="dpcy" />
<constructor-arg name="mesg" value="Hi this is a test mesg" />
</bean>
<bean id="dependent2" class="com.learning.spring.constinjection.Dependent"
c:mesg="Hi, this is another test mesg" />
</beans>
Dateiname: Dependent.java
public class Dependent {
Dependency dpcy;
Dependent(Dependency dpcy, String mesg){
this.dpcy = dpcy;
System.out.println("Message is: " + mesg);
}
Dependent(String mesg){
System.out.println("Only Message is: " + mesg);
}
@Autowired
Dependent(Integer ticketno){
System.out.println("Ticket no is: " + ticketno);
}
}
Dateiname:
Dependency.javapublic class Dependency {
Dependency(){
System.out.println("Dependency loaded successfully");
}
}
Dateiname: ConstructorInjectionApp
public class ConstructorInjectionApp {
public static void main(String[] args) {
GenericXmlApplicationContext gen = new GenericXmlApplicationContext();
gen.load("classpath:simplespringconstinjection.xml");
gen.refresh();
Dependent d = (Dependent) gen.getBean("dependent");
Dependent d2 = (Dependent) gen.getBean("dependent2");
}
}
Benötigen Sie * die @ autowired Annotation für den Konstruktor? Dependent? Es ist im Allgemeinen verwirrend, autoverzierte Annotationen mit xml/java-Definitionen zu mischen. – sisyphus
Ya ist verwirrend, aber ich lerne nur Federn. Also dachte ich mir, ich sollte zuerst die Dinge lernen und mich dann für Best Practices entscheiden. –
kann ich den Grund für den Downvote wissen? –