spring(六)_bean装配基于xml(3)

属性依赖注入

1.构造方法

关键字:<constructor-arg>
属性值:

        name:参数名称
		value:普通数据值
		ref:引用数据,一般是另一个bean id值
		index:参数索引号,从0开始 。如果只有索引,匹配到了多个构造方法时,默认使用第一个
		type :参数类型

目标类:

private Integer id;
	
	private String username;
	
	private Integer userage;	

	public User(Integer id, String username) {
		super();
		this.id = id;
		this.username = username;
	}

	public User(String username, Integer userage) {
		super();
		this.username = username;
		this.userage = userage;
	}

.xml:

<!-- 方式一  名称name-->
       <bean id="User" class="cn.itcast.spring.cons.User">
       <constructor-arg name="id" value="0"></constructor-arg>
       <constructor-arg name="username" value="jack"></constructor-arg>
       </bean>
       
<!-- 方式二  索引 index和类型type -->       
       <bean id="User" class="cn.itcast.spring.cons.User">
       <constructor-arg index="0" type="java.lang.Integer" value="0"></constructor-arg>
       <constructor-arg index="1" type="java.lang.String" value="jack"></constructor-arg>
       </bean>
2.setter方法
 setter方法注入 
		* 值数据 
			<property name="" value="值">
			等效
			<property name="">
				<value>值</value>
		* 引用数据
			<property name="" ref="另一个bean">
			等效
			<property name="">
				<ref bean="另一个bean"/>
	<bean id="personId" class="com.itheima.f_xml.b_setter.Person">
		<property name="pname" value="曾小贤"></property>
		<property name="age">
			<value>1234</value>
		</property>
		
		<property name="homeAddr" ref="homeAddrId"></property>
		<property name="companyAddr">
			<ref bean="companyAddrId"/>
		</property>
	</bean>
3.p命名空间(了解)
xmlns:p="http://www.springframework.org/schema/p
<bean id="personId" class="com.itheima.f_xml.c_p.Person" 
		p:pname="AC" p:age="22" 
		p:homeAddr-ref="homeAddrId" p:companyAddr-ref="companyAddrId">
	</bean>
4.spel(了解)

<property>进行统一编程,所有的内容都使用value

<property name="" value="#{表达式}">
	#{123}、#{'jack'} : 数字、字符串
	#{beanId}	:另一个bean引用
	#{beanId.propName}	:操作数据
	#{beanId.toString()}	:执行方法
	#{T(类).字段|方法}	:静态方法或字段
<!-- 
		<property name="cname" value="#{'jack'}"></property>
		<property name="cname" value="#{customerId.cname.toUpperCase()}"></property>
			通过另一个bean,获得属性,调用的方法
		<property name="cname" value="#{customerId.cname?.toUpperCase()}"></property>
			?.  为空判断
	-->
	<bean id="customerId" class="com.itheima.f_xml.d_spel.Customer" >
		<property name="cname" value="#{customerId.cname?.toUpperCase()}"></property>
		<property name="pi" value="#{T(java.lang.Math).PI}"></property>
	</bean>
5.集合注入
集合的注入都是给<property>添加子标签
		数组:<array>
		List:<list>
		Set:<set>
		Map:<map> ,map存放k/v 键值对,使用<entry>描述
		Properties:<props>  <prop key=""></prop>  
			
		值数据:<value>
		引用数据:<ref>
<bean id="collDataId" class="com.itheima.f_xml.e_coll.CollData" >
		<property name="arrayData">
			<array>
				<value>AA</value>
				<value>AB</value>
				<value>AC</value>
				<value>AD</value>
			</array>
		</property>
		<property name="propsData">
			<props>
				<prop key="店员">S</prop>
				<prop key="警察">T</prop>
				<prop key="医生">D</prop>
			</props>
		</property>
</bean>			
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值