Spring学习07属性依赖注入

xiaoxiao2021-02-28  93

7.1属性依赖注入

依赖注入方式:手动装配 和 自动装配

手动装配:一般进行配置信息都采用手动 基于xml装配:构造方法、setter方法 基于注解装配:

自动装配:struts和spring 整合可以自动装配 byType:按类型装配 byName:按名称装配 constructor构造装配, auto: 不确定装配。

7.1.1构造方法

7.1.1.1目标类

public class User { private Integer uid; private String username; private Integer age; public User(Integer uid, String username) { super(); this.uid = uid; this.username = username; } public User(String username, Integer age) { super(); this.username = username; this.age = age; }

7.1.1.2Spring配置

<!-- 构造方法注入 * <constructor-arg> 用于配置构造方法一个参数argument name :参数的名称 value:设置普通数据 ref:引用数据,一般是另一个bean id值 index :参数的索引号,从0开始 。如果只有索引,匹配到了多个构造方法时,默认使用第一个。 type :确定参数类型 例如:使用名称name <constructor-arg name="username" value="jack"></constructor-arg> <constructor-arg name="age" value="18"></constructor-arg> 例如2:【类型type 和 索引 index <constructor-arg index="0" type="java.lang.String" value="1"></constructor-arg> <constructor-arg index="1" type="java.lang.Integer" value="2"></constructor-arg> --> <bean id="userId" class="com.itheima.f_xml.a_constructor.User" > <constructor-arg index="0" type="java.lang.String" value="1"></constructor-arg> <constructor-arg index="1" type="java.lang.Integer" value="2"></constructor-arg> </bean>

7.2setter方法

<!-- setter方法注入 * 普通数据 <property name="" value="值"> 等效 <property name=""> <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> <bean id="homeAddrId" class="com.itheima.f_xml.b_setter.Address"> <property name="addr" value="阜南"></property> <property name="tel" value="911"></property> </bean> <bean id="companyAddrId" class="com.itheima.f_xml.b_setter.Address"> <property name="addr" value="北京八宝山"></property> <property name="tel" value="120"></property> </bean>

7.3P命名空间【了解】

对“setter方法注入”进行简化,替换,而是在

<bean p:属性名="普通值" p:属性名-ref="引用值">

p命名空间使用前提,必须添加命名空间

<bean id="personId" class="com.itheima.f_xml.c_p.Person" p:pname="禹太璞" p:age="22" p:homeAddr-ref="homeAddrId" p:companyAddr-ref="companyAddrId"> </bean> <bean id="homeAddrId" class="com.itheima.f_xml.c_p.Address" p:addr="DG" p:tel="东莞"> </bean> <bean id="companyAddrId" class="com.itheima.f_xml.c_p.Address" p:addr="DG" p:tel="岛国"> </bean>

7.4SpEL【了解】

//对<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> ?. 如果对象不为null,将调用方法 --> <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>

扩展阅读:Spring表达式语言

7.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>ZS</value> <value>LS</value> <value>张三</value> <value>李四</value> </array> </property> <property name="listData"> <list> <value>赵二</value> <value>王五</value> <value>吴六</value> <value>周七</value> </list> </property> <property name="setData"> <set> <value>武则天</value> <value>秦始皇</value> <value>汉武帝</value> </set> </property> <property name="mapData"> <map> <entry key="jack" value="杰克"></entry> <entry> <key><value>rose</value></key> <value>肉丝</value> </entry> </map> </property> <property name="propsData"> <props> <prop key="小王">王五</prop> <prop key="小张">张三</prop> <prop key="小李">李四</prop> </props> </property> </bean>
转载请注明原文地址: https://www.6miu.com/read-42472.html

最新回复(0)