java - ConstructorProperties注释不起作用

标签 java spring dependency-injection annotations inversion-of-control

我正在尝试使用基于构造函数的依赖注入(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/

相关文章:

java - 有没有可能通过使用 Guice 来拦截这样的方法?

java - 我可以让 Gradle 只引入所需的依赖项吗?

java - 元组列表的 crudrepository findBy 方法签名

c# - 通过 Controller Factory 注入(inject)实例

java - Spring Boot - Jackson 在使用列表字段时无法 POST/PUT (@ManyToMany)

java - 将数据存储到数组列表中,然后存储到二叉搜索树中

java - 在jsp页面中包含外部javascript文件

java - 如何使用反射获取以 List<SomeObject> 作为参数的方法

java - Controller 在 Spring-MVC 中反复调用自身

java - 无法加载ApplicationContext(Spring Boot)