spring_05装配bean
一.前言
<bean id="user1" scope="singleton" init-method="myInit" destroy-method="myDestory" class="com.ahd.domain.User">
1.id作用设置对象名,scope为作用域,class是相关bean的完整路径.
2.使用原型bean会对性能产生影响,尽量不要设置成prototype,除非有必要,尽量使用scope=”singleton”
3.init-method和destroy-method为定制方法,前者为定制初始化bean的方法,后者为定制销毁bean及其他需要关闭对象的方法
4.定制方法也可以通过注解的方式配置
5.不推荐使用接口,使用接口后bean和springAPI绑定了
6.如果要把bean的属性设置成空,可以设置成<null/>
二.bean的作用域
三.如何给集合对象注入值(map,list,set,数组)?
1.list和数组类似:
<property name="namelist"> <list> <value>北京</value> <value>上海</value> <value>天津</value> </list> </property> <!--value元素改成ref即可引用其他bean对象 --> <property name="userlist"> <list> <ref bean="user1"/> <ref bean="user2"/> </list> </property>
java测试遍历代码:
//遍历list<String> for(String s:cu.getNamelist()){ System.out.println(s); } //遍历list<User> System.out.println(); for(User user:cu.getUserlist()){ System.out.println(user.getId()+user.getName()); System.out.println(user); }
2.配置set,set无序不重复,配置代码beans:
<property name="userset"> <set> <ref bean="user1"/> <ref bean="user2"/> </set> </property>
java测试遍历代码:
//遍历set for(User user:cu.getUserset()){ System.out.println("set"+user.getId()+user.getName()); }
3.配置map,
<property name="usermaps"> <map> <entry key="111" value-ref="user1"/> <entry key="222" value-ref="user2"/> </map> </property>
java测试遍历代码:
//遍历map,方式一 Map<String,User> map=cu.getUsermaps(); for(String key:map.keySet()){ System.out.println(key+map.get(key)+"user:"+map.get(key).getId()); } //遍历map,方式二(使用迭代器) Iterator<Map.Entry<String,User>> it=map.entrySet().iterator(); while(it.hasNext()){ Map.Entry<String, User> entry=it.next(); System.out.println("key:"+entry.getKey()+" value:"+entry.getValue()); } //遍历map,方式三,适合数据量特别大的时候 for(Map.Entry<String, User> entry:map.entrySet()){ System.out.println(entry.getKey()+entry.getValue()); } //遍历map,方式四,只能遍历value,不能遍历key for(User user:map.values()){ System.out.println(user); }
4.给属性集合配值:
<property name="userpro"> <props> <prop key="user">password</prop> <prop key="user1">password1</prop> </props> </property>
测试代码
Properties prop=cu.getUserpro(); Enumeration<Object> keys = prop.keys(); while(keys.hasMoreElements()){ String key=keys.nextElement().toString(); System.out.println(key+" "+prop.getProperty(key)); }
四.内部bean,
内部bean不能被其他对象所引用,只能供父bean使用
<bean id="user1" class="com.ahd.domain.User"> <property name="name"> <bean id="user3" class="com.ahd.domain.Use"> <property name="id" value="2" /> <property name="name" value="李四" /> </bean> </property> </bean>
五.继承
<bean id="check3" parent="validateUser" class="com.ahd.serviceImpl.CheckUser3"> <property name="phone"> <value>13548965896</value> </property> </bean>
CheckUser3 类.
package com.ahd.serviceImpl; import com.ahd.service.ValidateUser; public class CheckUser3 extends CheckUser1{ private String phone; public CheckUser3(){ } public String getPhone() { return phone; } public void setPhone(String phone) { this.phone = phone; } }