码农笔记Spring-Boot程序员

spring入门--bean加载

2017-11-09  本文已影响68人  zhaoyunxing

[*] spring加载bean的两种方式

[*] spring依赖注入方式

[*] bean配置

源码地址

spring加载bean的两种方式

依赖关系图
  // ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");

ApplicationContext ctx = new FileSystemXmlApplicationContext("F:\\code\\java\\springdemoroot\\spring4.0x\\src\\main\\resources\\applicationContext.xml");

bean的获取

spring 依赖注入方式

属性注入

通过构造器注入

<!--通过构造器注入1-->
 <bean id="car" class="com.sunny.beans.di.Car">
    <constructor-arg index="0">
        <value><![CDATA[<Benchi^>]]></value>
    </constructor-arg>
    <constructor-arg index="1">
       <value>shanghai</value>
    </constructor-arg>
    <constructor-arg index="2">
       <value>3000</value>
    </constructor-arg>
</bean>

<!--通过构造器注入2-->
<bean id="car2" class="com.sunny.beans.di.Car">
    <constructor-arg value="240" name="maxSpeed" type="int" index="2"></constructor-arg>
    <constructor-arg value="baoma" index="0"></constructor-arg>
     <constructor-arg value="shanghai" index="1"></constructor-arg>
</bean>

工厂方法注入(没有用过)

bean配置

内部bean配置

<bean id="person2" class="com.sunny.beans.reference.Person">
   <property name="name" value="李四"></property>
    <property name="age" value="25"></property>
    <property name="car">
       <bean id="car3" class="com.sunny.beans.di.Car">
          <constructor-arg value="250" name="maxSpeed" type="int" index="2"></constructor-arg>
          <constructor-arg value="mazida" name="brand" index="0"></constructor-arg>                
         <constructor-arg value="shanghai" name="corp" index="1"></constructor-arg>
       </bean>
    </property>
</bean>

null值设置

  <bean id="person3" class="com.sunny.beans.reference.Person">
        <constructor-arg name="name" value="王五"/>
        <constructor-arg name="age" value="25"/>
        <constructor-arg name="car">
            <null/>
        </constructor-arg>
    </bean>

给级联属性赋值

<bean id="person4" class="com.sunny.beans.reference.Person">
        <constructor-arg name="name" value="王五"/>
        <constructor-arg name="age" value="25"/>
        <constructor-arg name="car" ref="car"/>
        <!--使用级联修改小车的最大速度为100-->
        <property name="car.maxSpeed" value="100"></property>
</bean>

配置集合属性

 <bean id="conllectionsPerson" class="com.sunny.beans.conllections.Person">
    <property name="name" value="钻石王老五"/>
    <property name="age" value="50"/>
    <property name="cars">
        <list>
            <ref bean="car"/>
            <ref bean="car2"/>
                <!--<value type="com.sunny.beans.HelloWorld">sdfsd</value>-->
            <bean class="com.sunny.beans.di.Car">
                <constructor-arg value="250" name="maxSpeed" type="int" index="2"></constructor-arg>
                <constructor-arg value="mazida" name="brand" index="0"></constructor-arg>
                <constructor-arg value="shanghai" name="corp" index="1"></constructor-arg>
            </bean>
        </list>
    </property>
</bean>

配置map属性

 <bean id="mapPerson" class="com.sunny.beans.conllections.MapPerson">
    <property name="name" value="老王"/>
    <property name="age" value="30"/>
    <property name="cars">
        <map>
            <entry key="AA" value-ref="car"></entry>
            <entry key="BB" value-ref="car2"></entry>
        </map>
    </property>
</bean>

配置 properties 属性值

<bean id="dataSource" class="com.sunny.beans.properties.DataSource">
    <property name="properties">
        <props>
            <prop key="user">root</prop>
            <prop key="password">123456</prop>             
            <prop key="jdbcUrl">jdbc:mysql....</prop>
            <prop key="driverClass">com.mysql.jdbc.Driver</prop>
        </props>
    </property>
</bean>

配置单独的bean,提供多个bean引入

<util:list id="commonCars">
    <ref bean="car"/>
    <ref bean="car2"/>
</util:list>
    <!--引入公用的bean-->
<bean id="person5" class="com.sunny.beans.conllections.Person">
   <property name="name" value="引入公用的bean"/>    
   <property name="age" value="30"/>
   <property name="cars" ref="commonCars"/>
</bean>

通过p命名空间为bean属性赋值

<bean id="person6" class="com.sunny.beans.reference.Person" p:age="20" p:name="通过p给bean属性赋值" p:car-ref="car"></bean>

如果有写的不对的地方请指出

我的微信号可以一起学习、讨论、纠错
上一篇下一篇

猜你喜欢

热点阅读