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;
    }    
    
}

 

posted @ 2019-02-11 13:56  爱华顿g  阅读(158)  评论(0编辑  收藏  举报