Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Spring中的Autowire(XML)没有';不适用于大写ID?_Java_Xml_Spring_Spring Mvc - Fatal编程技术网

Java Spring中的Autowire(XML)没有';不适用于大写ID?

Java Spring中的Autowire(XML)没有';不适用于大写ID?,java,xml,spring,spring-mvc,Java,Xml,Spring,Spring Mvc,这不起作用: Triangle.java spring.xml spring.xml 请注意,上面两个示例之间的唯一区别是pointA对象一个是大写的“p”,另一个是小写的“p”。 我觉得奇怪,这会如何影响自动布线。或者还有其他问题吗?如果您查看有关此问题的Spring文档,您可以看到autowire的名称如下 这就是为什么会找到id为pointA的bean,而id为pointA的bean不会被找到的原因,因为Triangle类具有名为pointA而不是pointA的属性,因为您没有遵循Ja

这不起作用:

Triangle.java spring.xml spring.xml

请注意,上面两个示例之间的唯一区别是pointA对象一个是大写的“p”,另一个是小写的“p”。
我觉得奇怪,这会如何影响自动布线。或者还有其他问题吗?

如果您查看有关此问题的Spring文档,您可以看到autowire的名称如下


这就是为什么会找到
id
pointA
的bean,而
id
pointA
的bean不会被找到的原因,因为
Triangle
类具有名为
pointA
而不是
pointA

的属性,因为您没有遵循JavaBeans约定,所以我唯一的猜测是(
setPointA
用于名为
pointA
的字段/属性),Spring可能会感到困惑。这种配置风格很古老,最好不要在任何情况下使用;基于Java的配置几乎总是更好。困惑的意思是它无法识别
PointA
的setter?另外,您能再次解释这一行吗“这种配置风格很古老,最好不要在任何情况下使用;基于Java的配置几乎总是更好。“您不仅在使用XML配置(这有点过时),而且在手动指定要在XML中设置的字段,而不是在类本身上使用
@Inject
@Autowired
。请查看有关“Spring Java配置”的任何引用。”对于基于代码的配置示例。如果仔细检查,
Triangle
类在第一种情况下具有名为
PointA
的属性。@Viraj这一点没有任何区别,JavaBeans规范处理如何命名getter和setter方法,而bean
id
值是与仔细阅读文档。
public class Triangle {

    private Point PointA;

    public void draw(){
        System.out.println("Triangle draw.");
        System.out.println(getPointA().getX());
    }

    /**
     * @return the PointA
     */
    public Point getPointA() {
        return PointA;
    }

    /**
     * @param PointA the PointA to set
     */
    public void setPointA(Point PointA) {
        this.PointA = PointA;
    }

}
<beans>
    <bean id="PointA" class="Point">
        <property name="x" value="0"></property>
        <property name="y" value="0"></property>
    </bean>

    <bean id = "triangle" class="Triangle" autowire="byName" >
    </bean>

</beans>
public class Triangle {

    private Point pointA;

    public void draw(){
        System.out.println("Triangle draw.");
        System.out.println(getpointA().getX());
    }

    /**
     * @return the pointA
     */
    public Point getPointA() {
        return pointA;
    }

    /**
     * @param pointA the pointA to set
     */
    public void setPointA(Point pointA) {
        this.pointA = pointA;
    }

}
<beans>
    <bean id="pointA" class="Point">
        <property name="x" value="0"></property>
        <property name="y" value="0"></property>
    </bean>

    <bean id = "triangle" class="Triangle" autowire="byName" >
    </bean>

</beans>