我正在尝试使用基于构造函数的依赖注入(inject)来获取 bean 实例。但它不断抛出org.springframework.beans.factory.UnsatisfiedDependencyException。
错误消息:创建在类路径资源 [bean.xml] 中定义的名称为“bean1”的 bean 时出错:通过索引为 1 类型 [java.lang.String] 的构造函数参数表达的依赖关系不满足:构造函数参数类型不明确 - did您指定了正确的 bean 引用作为构造函数参数吗?
以下是我的简单代码:
Bean1.java
package com.example.bean
import java.beans.ConstructorProperties;
public class Bean1 {
private int years;
private String ultimateAnswer;
@ConstructorProperties({"years", "ultimateAnswer"})
public Bean1(int years, String ultimateAnswer) {
this.years = years;
this.ultimateAnswer = ultimateAnswer;
}
public int getYears() {
return years;
}
public void setYears(int years) {
this.years = years;
}
public String getUltimateAnswer() {
return ultimateAnswer;
}
public void setUltimateAnswer(String ultimateAnswer) {
this.ultimateAnswer = ultimateAnswer;
}
public void print() {
System.out.println("years:" + years + ", ultimateAnswer:" + ultimateAnswer);
}
}
TestApp.java
package com.example.app;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.example.bean.Bean1;
public class TestApp {
@SuppressWarnings("resource")
public static void main(String[] args) {
ApplicationContext context = new ClassPathXmlApplicationContext(new String[] {"bean.xml"});
Bean1 bean1 = context.getBean("bean1",Bean1.class);
bean1.print();
}
}
bean.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.xsd">
<bean id="bean1" class="com.example.bean.Bean1">
<constructor-arg name="years" value="7500000"/>
<constructor-arg name="ultimateanswer" value="42"/>
</bean>
</beans>
谁能帮忙看看问题出在哪里吗? 提前致谢!
最佳答案
轻微拼写错误:-),在 xml 中应该是 ultimateAnswer
,而不是 ultimateanswer
关于java - ConstructorProperties注释不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23073226/