Java Spring中的Autowire(XML)没有';不适用于大写ID?
这不起作用: Triangle.java spring.xml spring.xmlJava 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
请注意,上面两个示例之间的唯一区别是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方法,而beanid
值是与仔细阅读文档。
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>