Spring_依賴注入DI

依賴注入:DI(dependency import)給對象的屬性賦值java

第一種方法給對象屬性賦值:mysql

這樣在剛啓動spring框架時,就調用對象的有參構造而不是無參構造了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>

 

第二種方法賦值:sql

經過setter getter。開啓框架調用的是無參構造。oracle

<?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是依賴注入,給對象賦值。有兩種方法賦值。url

一種是利用構造器,啓動框架會調用有參構造。spa

一種是利用set get賦值,啓動框架會調用無參構造。code

 

經過DI中的get/set方式給對象的list、set、map、properties(xxx.properties的配置文件)屬性賦值xml

 

<?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}]

相關文章
相關標籤/搜索