依赖注入:DI(dependency import)给对象的属性赋值

第一种方法给对象属性赋值:

这样在刚启动spring框架时,就调用对象的有参构造而不是无参构造了

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       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-2.5.xsd">

     <bean id="test1" class="cn.java.ioc1.YelloMouseWolf" >
         <!-- 
         constructor-arg:通过构造器给对象赋值,调用有参构造
             index:方法中第几个属性
             type:这个属性的类型
             value:要给这个属性赋值的内容
         -->
         <constructor-arg index="0" type="java.lang.String" value="tom"></constructor-arg>
         <constructor-arg index="1" type="java.lang.Integer" value="2"></constructor-arg>
         <constructor-arg index="2" type="java.lang.Float" value="2.5"></constructor-arg>
     </bean>

</beans>

 

第二种方法赋值:

通过setter getter。开启框架调用的是无参构造。

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       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-2.5.xsd">

     <bean id="test1" class="cn.java.ioc1.YelloMouseWolf" >
         <!-- 
         property:通过setter getter赋值(开启框架会调用无参构造)
             name:属性名
             value:属性的值
         -->
         <property name="name" value="jack"></property>
         <property name="age" value="10"></property>
         <property name="weight" value="2.5"></property>
     </bean>

</beans>

总结:什么是DI?

DI是依赖注入,给对象赋值。有两种方法赋值。

一种是利用构造器,启动框架会调用有参构造。

一种是利用set get赋值,启动框架会调用无参构造。

 

通过DI中的get/set方式给对象的list、set、map、properties(xxx.properties的配置文件)属性赋值

 

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       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-2.5.xsd">

     <bean id="pandaXML" class="cn.java.ioc1.Panda"  >
         <property name="name" value="熊猫"></property>
         <property name="age" value="20"></property>
     </bean> 
    <!-- 
    普通的属性正常赋值
    name的类型是String,但像pet这种属性的类型是Panda,那就要在panda的xml先把属性值配置好。然后用ref引用那个xml(自定义类型的属性赋值用ref)    
    List类型的赋值要新写一个<list>标签然后用<value>标签写内容,内容默认为String类型。也可以用<ref />引入别的bean。
    Set类型和List类型一样
    Map类型用<entry>标签,内容是一个key和一个value。两个值都为Object类型
    Properties类型用<props>,再用<prop>标签写值
    -->
    <bean id="person" class="cn.java.ioc1.Person" >
         <property name="name" value="张三"></property>
         <property name="pet" ref="pandaXML"></property>
         <property name="list" >
             <list>
                 <value>list内容1</value>
                 <value>list内容2</value>
                 <ref bean="pandaXML"/>
             </list>
         </property>
         <property name="set">
             <set>
                  <value>set内容1</value>
                 <value>set内容2</value>
                 <ref bean="pandaXML"/>
             </set>
         </property>
         <property name="map">
             <map>
                 <entry key="姓名" value="李四"></entry>
                 <entry key="年龄" value="10"></entry>
             </map>
         </property>
         
         <property name="props">
             <props>
                 <prop key="driver">com.mysql.jdbc.Driver</prop>
                 <prop key="url">jdbc:oracle:@thin:localhost:1521:orcl</prop>
             </props>
         </property>
     </bean>

</beans>

这时Person对象的内容是:

Person [name=张三, pet=Panda [name=熊猫, age=20], list=[list内容1, list内容2, Panda [name=熊猫, age=20]], set=[set内容1, set内容2, Panda [name=熊猫, age=20]], map={姓名=李四, 年龄=10}, props={url=jdbc:oracle:@thin:localhost:1521:orcl, driver=com.mysql.jdbc.Driver}]

 

posted on 2018-05-19 17:46  lonske  阅读(155)  评论(0编辑  收藏  举报