spring_05装配bean

时间:2025-03-07 22:05:19

一.前言

 <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的作用域

  spring_05装配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;
} }