spring学习第二天

IOC容器装配Bean

Bean中属性注入–基于XML方式

  • Spring支持
    • 构造方法注入
    • setter方法注入

构造器注入

  • 使用构造方法注入,在Spring配置文件中,通过 设置注入的属性 (可以通过index或者type注入)

setter方法注入

  • 使用setter方法注入,在Spring配置文件中,通过设置注入的属性

    <bean id="car2" class="cn.itcast.spring3.demo5.Car2">
    <!-- <property>标签中name就是属性名称,value是普通属性的值,ref:引用其他的对象 -->
    <property name="name" value="保时捷"/>
    <property name="price" value="5000000"/>
    </bean>
    

setter方法注入对象属性

  • 标签中name就是属性名称,value是普通属性的值,ref:引用其他的对象

名称空间p:注入属性

  • Spring2.5版本引入了名称空间p
    • p:<属性名>=“xxx” 引入常量值
    • p:<属性名>-ref=“xxx” 引用其它Bean对象
  • 引入名称空间:

xml:

<bean id="car2" class="cn.itcast.spring3.demo5.Car2" p:name="宝马" p:price="400000"/>

<bean id="person" class="cn.itcast.spring3.demo5.Person" p:name="童童" p:car2-ref="car2"/>

SpEL:属性的注入 - Spring3.0提供注入属性方式: - 语法: - #{‘神回复:哈哈’}使用字符串 - #{topicId3} 使用另一个bean - #{topicId4.content.toUpperCase()} 使用指定名属性,并使用方法 - #{T(java.lang.Math).PI} 使用静态字段或方法

<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="#{personInfo.name}"/>-->
<property name="name" value="#{personInfo.showName()}"/>
    <property name="car2" value="#{car2}"/>
</bean>

<bean id="personInfo" class="cn.itcast.spring3.demo5.PersonInfo">
    <property name="name" value="张三"/>
</bean>

SpEL : 集合属性的注入 – List(数组)

SpEL : 集合类型属性注入 – Set

SpEL : 集合类型属性注入 – Map

SpEL :集合类型属性注入 – Properties

综合案例

    <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 key="娇娇" value="333"/>
            </map>
        </property>

        <property name="properties">
            <props>
                <prop key="username">root</prop>
                <prop key="password">123</prop>
            </props>
        </property>
    </bean>

多配置文件的加载

- 第一种写法:
 - ApplicationContext applicationContext = new ClassPathXmlApplicationContext("bean1.xml",”bean2.xml”);
- 第二种方法
 - <import resource="applicationContext2.xml"/>