zoukankan      html  css  js  c++  java
  • day38 14-Spring的Bean的属性的注入:集合属性的注入

    集合:List、Set、Map。

    package cn.itcast.spring3.demo6;
    
    import java.util.List;
    import java.util.Map;
    import java.util.Properties;
    import java.util.Set;
    //集合属性的注入
    public class CollectionBean {
        private List<String> list;
        private Set<String> set;
        private Map<String,Integer> map;
        private Properties properties;//还可以注入属性对象
        //这个属性对象Properties它底层继承HashTable,就是线程安全的那个对象
        //还可以注入数组,数组的注入和List是一样的.
    //    public List<String> getList() {
    //        return list;
    //    }
    
    /*    public Set<String> getSet() {
            return set;
        }*/
    
        public void setSet(Set<String> set) {
            this.set = set;
        }
    
        public void setList(List<String> list) {
            this.list = list;
        }
    
    /*    @Override
        public String toString() {
            return "CollectionBean [list=" + list + ", set=" + set + "]";
        }*/
    
    /*    public Map<String, Integer> getMap() {
            return map;
        }*/
    
        public void setMap(Map<String, Integer> map) {
            this.map = map;
        }
    
    /*    @Override
        public String toString() {
            return "CollectionBean [list=" + list + ", set=" + set + ", map=" + map
                    + "]";
        }*/
    
    /*    public Properties getProperties() {
            return properties;
        }*/
    
        public void setProperties(Properties properties) {
            this.properties = properties;
        }
    
        @Override
        public String toString() {
            return "CollectionBean [list=" + list + ", set=" + set + ", map=" + map
                    + ", properties=" + properties + "]";
        }
    
    /*    @Override
        public String toString() {
            return "CollectionBean [list=" + list + "]";
        }*/
    
    /*    public List<String> getList() {
            return list;
        }*/
        
    }
    package cn.itcast.spring3.demo6;
    
    import org.junit.Test;
    import org.springframework.context.ApplicationContext;
    import org.springframework.context.support.ClassPathXmlApplicationContext;
    
    public class SpringTest6 {
    @Test
    public void demo1(){//注入list
        ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
        CollectionBean collectionBean = (CollectionBean) applicationContext.getBean("collectionBean");
        
        System.out.println(collectionBean);
        
    }
    }
    <?xml version="1.0" encoding="UTF-8"?>
    <!-- 别去schema,schema是文件,本地的文件,你得引那个头 -->
    
    <beans xmlns="http://www.springframework.org/schema/beans"
           xmlns:p="http://www.springframework.org/schema/p"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xsi:schemaLocation="
    http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
    <!-- demo1快速入门================================================= -->
    <!-- 把接口和实现类在这个配置文件中配置,有了实现类的全路径之后到时候才能用工厂反射 -->
       
       <!-- 通过一个<bean>标签来设置类的信息,通过id属性为类起个标识. -->
        <!-- 接口,实现类,配置文件也都有了 -->
        <!-- 现在有一个工厂Spring为我们提供好了,其实就是解析这个XML文件 -->
        <!-- 这个工厂你自己写会不会写?你用dom4j找里面的bean标签,找到class的属性值,然后就可以Class.forName()反射生成类的实例.其实Spring
             也是这么做的,只不过工厂由Spring提供好了
         -->
        <bean id="helloService" class="cn.itcast.spring3.demo1.HelloServiceImpl">
             <!-- 使用<property>标签注入属性 
             value指的是普通值
             ref指的是对象
             -->
        <property name="info"  value="传智播客"></property>
        </bean>
        <!-- demo1快速入门 -->
        <!-- demo2Bean的实例化 -->
        <!-- 默认情况下使用的就是无参数的构造方法. -->
        <!-- 
        <bean id="bean1" class="cn.itcast.spring3.demo2.Bean1"></bean>
        -->
        <!-- 
        <bean name="bean1" class="cn.itcast.spring3.demo2.Bean1"></bean>
        -->
        <!-- 第二种使用静态工厂实例化 不能写class了,因为现在不是由Spring直接帮你创建对象了-->
        <!--  
        <bean id="bean2" class="cn.itcast.spring3.demo2.Bean2Factory" factory-method="getBean2"></bean>
        -->
        <!-- 第三种使用实例工厂实例化 -->
        <!-- 
        <bean id="bean3" factory-bean="bean3Factory" factory-method="getBean3"></bean>
        -->
        <!-- 要先把Bean3Factory实例化 -->
        <!--  
        <bean id="bean3Factory" class="cn.itcast.spring3.demo2.Bean3Factory"></bean>
        -->
        <!-- demo2Bean的实例化======================  end-->
        
        <!-- demo3Bean的作用范围======================= -->
        <!--  
        <bean id="customer" class="cn.itcast.spring3.demo3.Customer" scope="prototype"></bean>
        -->
        <!-- 
        <bean id="product" class="cn.itcast.spring3.demo3.Product" init-method="setup" destroy-method="teardown" scope="singleton">
           <property name="name" value="空调">-->
           <!-- 把Product类的属性name注入进来 -->
           <!-- 
           </property>
        </bean>    
     -->
    
           <!-- demo4Bean的生命周期======================= -->
           <!--  
           <bean id="customerService" class="cn.itcast.spring3.demo4.CustomerServiceImpl" init-method="setup"  destroy-method="teardown">
           
              <property name="name" value="itcast"></property>
           </bean>
           -->
           <!-- 后处理Bean是由Spring容器自动调用不用你管,我们起个id是为了我们在程序中去获得它。但是这个类不用由我们获得, 由Spring自动调用。cn.itcast.spring3.demo4.MyBeanPostProcessor是后处理Bean-->
            <!-- <bean class="cn.itcast.spring3.demo4.MyBeanPostProcessor"></bean>-->
           <!-- demo5Bean的属性注入=====================================================================================================================================-->
           <!-- 构造方法的注入 -->
           <bean id="car" class="cn.itcast.spring3.demo5.Car">
            <constructor-arg name="name" value="宝马"><!-- 通过这个标签为类注入属性 -->
            </constructor-arg>
            <constructor-arg name="price" value="1000000"><!-- 通过这个标签为类注入属性 -->
            </constructor-arg>
            <!--  
            <constructor-arg index="0" type="java.lang.String" value="奔驰">--><!-- 通过这个标签为类注入属性 -->
            <!-- </constructor-arg>-->
            <!--  
            <constructor-arg index="1" type="java.lang.Double" value="2000000">--><!-- 通过这个标签为类注入属性 -->     
           
           <!-- </constructor-arg>-->
           </bean>
           <!--  
           <bean id="car2" class="cn.itcast.spring3.demo5.Car2">
           -->
           <!-- <property>标签中name就是属性名称,value是普通属性的值,
           ref:引用其他的对象 
           -->
           <!--  
           <property name="name" value="保时捷奇瑞QQ"></property>
           <property name="price" value="500000020000"></property>
           </bean>
           -->
           <!--  p名称空间的写法
           <bean id="car2" class="cn.itcast.spring3.demo5.Car2" p:name="宝马" p:price="400000">
           </bean>
           -->
           <!-- SpEL写法 -->
           <bean id="car2" class="cn.itcast.spring3.demo5.Car2" >
           <property name="name" value="#{'大众'}"></property>
           <property name="price" value="#{'120000'}"></property>
           </bean>
           
           
           
           <!--         
           <bean id="person" class="cn.itcast.spring3.demo5.Person">
               <property name="name" value="任童"></property>
               <property name="car2" ref="car2"></property>
           </bean>
           -->
           
           <!-- p名称空间的写法 -->
           <!-- 
           <bean id="person" class="cn.itcast.spring3.demo5.Person" p:name="童童" p:car2-ref="car2">
           </bean>
           -->
           <!-- SpEL写法 -->
           <bean id="person" class="cn.itcast.spring3.demo5.Person">
           <!--  
               <property name="name" value="#{'小边'}"></property>
               -->
               <!--  
               <property name="name" value="#{personInfo.name}"></property>
               -->
               <property name="name" value="#{personInfo.showName()}"></property>
               <property name="car2" value="#{car2}"></property>
           
           
           </bean>
           
           <!--             
           <property name="name" value="任童"></property>
               <property name="car2" ref="car2"></property>
           -->
            <bean id="personInfo" class="cn.itcast.spring3.demo5.PersonInfo">
            <property name="name" value="张三"></property>
        
            </bean>
            <!-- demo5Bean的属性的注入============================================================== -->
            <!-- demo6Bean的集合属性的注入 ==============================================================-->
            <bean id="collectionBean" class="cn.itcast.spring3.demo6.CollectionBean">
                <!-- 注入List集合 -->
               <property name="list">
                   <list>
                   <value>童童</value>
                   <value>小凤</value>
                   </list>
               </property>
               
               <!-- 注入set集合 -->
               <property name="set">
                     <set>
                        <value>杜宏</value>
                        <value>如花</value>      
                     </set>
               </property>
               <!-- 注入map集合 -->
              <property name="map">
              
              <map>
                 <entry key="刚刚" value="111"></entry>
                 <entry key="娇娇" value="333"></entry>
                            
              </map>
              
              </property>
              <property name="properties">
              <props>
                  <prop key="username">root</prop><!-- prop有key和value的形式,属性文件就是key和value的形式 -->
                  <prop key="password">123</prop>   
              </props>
              </property>
            </bean>
    </beans>
  • 相关阅读:
    Anderson《空气动力学基础》5th读书笔记 第0记——白金汉PI定理
    108、将有序数组转换为二叉搜索树
    104、二叉树的最大深度
    237、删除链表中的节点
    1480、一维数组的动态和
    伪类与伪元素的由来及区别
    617、合并二叉树
    CDN
    JS DOM编程艺术 | 笔记
    HTML进阶
  • 原文地址:https://www.cnblogs.com/ZHONGZHENHUA/p/6725994.html
Copyright © 2011-2022 走看看