zoukankan      html  css  js  c++  java
  • Spring_依赖注入DI

    依赖注入: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}]

  • 相关阅读:
    2017-2018-1 20155314 《信息安全系统设计基础》第7周学习总结
    《信息安全技术》实验二 Windows口令破解
    2017-2018-1 20155314 《信息安全系统设计基础》第5周学习总结
    2017-2018-1 20155314《信息安全系统设计基础》实验一 开发环境的熟悉
    课后实践之mybash20155314
    《网络安全编程基础》之Socket编程
    2017-2018-1 20155314 《信息安全系统设计基础》第4周学习总结
    20165229 实验三 敏捷开发与XP实践
    课下作业(选做)
    20165229 第九周作业
  • 原文地址:https://www.cnblogs.com/lonske/p/9061083.html
Copyright © 2011-2022 走看看