setter的参数类型是否与getter的返回类型匹配? Bean属性“ engine”不可写或具有无效的setter方法

我有两个POJO类,并且我使用依赖项注入两个初始化值,但出现错误?当我运行CarAndEngine类时,出现错误。

错误:-警告:上下文初始化期间遇到异常-取消刷新尝试:org.springframework.beans.factory.BeanCreationException:创建在类路径资源[car.xml]中定义的名称为'c'的bean时出错:设置属性值时出错;嵌套异常是org.springframework.beans.NotWritablePropertyException:Bean类[com.meet.SpringExample.Car]的无效属性“ engine”:Bean属性“ engine”不可写或具有无效的setter方法。 setter的参数类型是否与getter的返回类型匹配?

Car.java

package com.meet.SpringExample;

public class Car {
private String carname;
private Engine engine;

public Car() {
    System.out.println("car");
}
public String getcarname() {
    return carname;
}
public void setCarname(String carname) {
    this.carname = carname;
}

public void printCarData() {
    System.out.println("carname"+carname);
    System.out.println("ModelYear"+engine.getModelYear());
}
}

Engine.java

package com.meet.SpringExample;

public class Engine {
private String modelYear;


public Engine() {
    System.out.println("Engine");
}

public String getModelYear() {
    return modelYear;
}

public void setModelYear(String modelYear) {
    this.modelYear = modelYear;
}

}

car.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">
    <bean id="c" class="com.meet.SpringExample.Car">
        <property name="carname" value="Ferrari"></property>
        <property name="engine" ref="e"></property>

    </bean>
</beans>

engine.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">
    <bean id="e" class="com.meet.SpringExample.Engine">
        <property name="modelYear" value="2015"></property> 
    </bean>
</beans>

CarAndEngine.java

package com.meet.SpringExample;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClasspathXmlApplicationContext;

public class CarAndEngine {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        String file[]=new String[] {"car.xml","engine.xml"};
        ApplicationContext context=new ClasspathXmlApplicationContext(file);
        Car c=(Car)context.getBean("c");
        c.printCarData();
    }

}
jinjin1991 回答:setter的参数类型是否与getter的返回类型匹配? Bean属性“ engine”不可写或具有无效的setter方法

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3028863.html

大家都在问