SSM學習—Spring(第三天學習記錄)

  • 集合屬性

    在Spring中可以通過一組內置的XML標籤來配置集合屬性,例如:<list>,<set>或<map>

數組和list

配置java.util.List類型的屬性,需要指定<list>標籤,在標籤裏包含一些元素。這些標籤 可以通過<value>指定簡單的常量值,通過<ref>指定對其他Bean的引用。通過<bean> 指定內置bean定義。通過<null/>指定空元素。甚至可以內嵌其他集合。

<!--list集合-->
    <bean id="testlist" class="DI.Person">
        <property name="id" value="103"></property>
        <property name="car" >

          <list>
                <ref bean="Car"/>
                <ref bean="DITest"/>
            </list>

        </property>
        <property name="name" value="李四"></property>
    </bean>
  <!--Map集合-->
    <bean id="testMap" class="DI.PersonMap">
        <property name="name" value="劉先生"/>
        <property name="cars">
            <map>
                <entry key="AA" value-ref="Car"/>
                <entry key="BB" value-ref="DITest"/>
            </map>
        </property>
    </bean>
 <!--集合bean-->
      <bean id="testlist" class="DI.Person">
        <property name="id" value="103"></property>
        <property name="car"  ref="listbean">

        </property>
        <property name="name" value="李四"></property>
    </bean>
    <util:list id="listbean">
        <ref bean="DITest"/>
        <ref bean="Car"/>

    </util:list>

 

 FactoryBean

Spring中有倆種類型的Bean,一種是普通的Bean,另外一種是FactoryBean

FactoryBean與Bean的區別:其返回的對象不是指定類的一個實例,其返回的是該工 廠bean的getObject方法所返回的對象


public class CarFactoryBean  implements FactoryBean<Car> {

    /**
     * 工廠Bean具體創建的Bean對象是由GetObject方法來返回的
     * @return
     * @throws Exception
     */
    @Override
    public Car getObject() throws Exception {
        return new Car("五菱宏光","五菱", (double) 80000);
    }

    /**
     * 返回一個bean對象的類型
     * @return
     */
    @Override
    public Class<?> getObjectType() {
        return Car.class;
    }

    /**
     * bean可以是單例的,也可以是原型的
     * @return
     */
    @Override
    public boolean isSingleton() {
        return false;
    }
        <!--Spring_Factory.xml的配置-->
    <!--FactoryBean具體的返回對象是由getObject來確定的-->
    <bean  id="factoryBean" class="factoryBean.CarFactoryBean"/>
    //測試案例
   public static void main(String[] args) {    //psvm
        ApplicationContext applicationContext=new
                ClassPathXmlApplicationContext("Spring_Factory.xml");
        Car cars=applicationContext.getBean("factoryBean",Car.class);
        System.out.println(cars.toString());//sout
    }

 

     Bean的高級配置

 繼承 

<!--bean的繼承關係
     abstract="true":抽象Bean,不能被創建對象,class可以省略不配置
     若父Bean沒有class,則子類必須腰帶class
     繼承可以從父類中繼承一些配置,但是id,abstract,autowire不會被繼承
     子bean從父bean中繼承配置,包括bean的屬性配置
   	 子bean也可以覆蓋從父bean繼承過來的配置    
     也可以忽略父bean的class屬性,讓子bean指定自己的類,而共享相同的屬性配置。但此時abstract必須設爲true。
-->
    <bean id="address1" abstract="true">
        <property name="city" value="鄭州"/>
        <property name="street" value="嵩山路"/>
    </bean>
    <bean id="address2" class="relation.Address" parent="address1">
             <property name="street" value="科學大道"/>
    </bean>

依賴

 <!--Bean的依賴關係-->
    <bean id="address3" class="relation.Address" parent="address1"
          depends-on="address4">
    <property name="street" value="京廣路"/>
    </bean>
<bean id="address4" class="relation.Address"/>

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章