1: property和constructor-arg区别:(参考百度经验)
- constructor-arg注入方式是通过构造方法注入,property注入方式是通过setxxx的方法注入。
constructor-arg注入:
<bean id="provider" class=".....">
<constructor-arg>
<value>构造函数的参数</value>
</constructor-arg> </bean>property注入
<bean id="renderer" class="....">
<property name="messageProvider">
<ref local="provider"/>
</property>
</bean>使用constructor-arg注入,如果有多个参数时使用index来区分:
<bean id="provider" class="......">
<constructor-arg index="0">
<value>first parameter</value>
</constructor-arg>
<constructor-arg index="1">
<value>second parameter</value>
</constructor-arg>
</bean>
- 使用constructor-arg注入,如果有多个构造函数时使用type来区分:
<bean id="constructorConfusion" class="com.apress.prospring.ch4.ConstructorConfusion">
<constructor-arg type="int">
<value>90</value>
</constructor-arg>
</bean>
----------
public class ConstructorConfusion {
public ConstructorConfusion(String someValue) {
System.out.println("ConstructorConfusion(String) called");
}
public ConstructorConfusion(int someValue) {
System.out.println("ConstructorConfusion(int) called");
}
}
2: property注入方法注意事项:
<bean id="helloworld" class="com.tutorialspoint.HelloWorld">
<property name="message" value="Hello World!"/>
<property name="he" value="he"/>
</bean>
- name 的值必须是 HelloWorld 类中的属性名称,而且该属性必须有对应的set方法,方法名的要求:set加上属性名,或者set加上首字母大写的属性名。如:name=”message”,则HelloWorld中有属性message,且对应的方法为setMessage或者setmessage。
- ref 传递引用,value传递值。