Spring如何解析区分大小写的属性名称

时间:2017-08-24 10:01:21

标签: spring spring-boot

package com.protect.shapes;

public class Triangle {
    String Type = null;
    String type = null;

    public String getType() {
        return Type;
    }

    public void setType(String Type) {
        this.Type = Type;
    }

    public String gettype() {
        return type;
    }

    public void settype(String type) {
        this.type = type;
    }

    public void draw() {
        System.out.println("Drawing " + type + " Triangle. " + Type);
    }
}

Configuration file.
<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">
<!-- Project beans go here -->
<bean id="triangle" class="com.protect.shapes.Triangle">
    <property name="Type" value="Equilateral">
    </property>
</bean>

我试图检查Spring如何处理区分大小写的属性名称但无法弄明白:对于我设置的typeType字段,我得到相同的输出

"Drawing Equilateral Triangle. null".

您能解释一下为什么以及如何实例化Type字段。

1 个答案:

答案 0 :(得分:1)

Spring无法找到Type属性的setter:

  • setType不会这样做,因为根据引用type属性的java beans specification
  • settype无效,因为根据相同的规范,它未被识别为属性设置器。

如果你想要一个大写的名字属性,它应该以(至少)两个大写字母开头,例如

public void setPType(...) {
    ...
}

<property name="PType" value="..."/>

检查规范的第8.8节。