直接量(基本类型、Strings类型等。)
<value/>元素
通过字符串来指定属性或构造器参数的值
<bean id="myDataSource" destroy-method="close"
class="org.apache.commons.dbcp.BasicDataSource">
<!-- results in a setDriverClassName(String) call -->
<property name="driverClassName">
<value>com.mysql.jdbc.Driver</value>
</property>
<property name="url">
<value>jdbc:mysql://localhost:3306/mydb</value>
</property>
<property name="username">
<value>root</value>
</property>
</bean>
idref元素
idref元素用来将容器内其它bean的id传给<constructor-arg/> 或 <property/>元素,同时提供错误验证功能。
<bean id="theTargetBean" class="..."/>
<bean id="theClientBean" class="...">
<property name="targetName">
<idref bean="theTargetBean" />
</property>
</bean>
<!--上述bean定义片段完全地等同于(在运行时)以下的片段:
<bean id="theTargetBean" class="..."/>
<bean id="client" class="...">
<property name="targetName">
<value>theTargetBean</value>
</property>
</bean>
-->
property的几种写法
属性文件式:
<bean id="mappings" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<!-- typed as a java.util.Properties -->
<property name="properties">
<value>
jdbc.driver.className=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/mydb
</value>
</property>
</bean>
标签内部式(手写的最好方式):
<bean id="foo" class="xxx.Foo">
<property name="bar" value="com.mysql.jdbc.Driver"/>
<property name="baz" value="jdbc:mysql://localhost:3306/mydb"/>
<property name="bean1" ref="root"/>
</bean>
标准式:(综合例子)
<bean id="foo" class="xxx.Foo" destroy- method="close">
<bean id="client" class="...">
<!-- 值(直接量)属性-->
<property name="valueProp1">
<value>A String</value>
</property>
<property name="valueProp1">
<value>1</value>
</property>
<!--bean(对象)属性-->
<property name="somebean1">
<!-- local 只能引用本XML文件内定义的bean-->
<ref local="somebean1">
</property>
<property name="somebean2">
<!-- bean 可引用本Ioc容器内任何文件内定义的bean-->
<ref bean="somebean2">
</property>
<property name="proxyTaget">
<!-- parent 引用父bean,(一般用于代理) 注意这里的ref引用的client就是这个bean的ID-->
<ref parent="client"/>
</property>
</bean>