zoukankan      html  css  js  c++  java
  • spring 之 DI

    1. DI:dependency injection:依赖注入。依赖注入和IOC是一件事不同的说法,对象的创建是依赖于容器的,对象属性的设置也是依赖于容器的。程序中被动接收对象,对象的属性值也是被动设置的。这个过程在spring称为注入。所以IOC又叫依赖注入(有容器来创建和管理对象)。

    2.DI 和 IOC的区别:

    DI (依赖注入) 更侧重于过程, 把对象通过setter、contruct、args等方式 注入到另一个对象中作为这个对象的一个成员变量(也可能是其他);
    IOC(控制反转): 侧重于结果,说的是对象的产生不是通过直接new 的,而是通过依赖注入的方式的。

    3.Spring的依赖注入分为两类:

    • 构造器注入
    • setter注入

    4.Spring 中不同类型的属性如何注入:

    • 基本类型通过value直接注入
      <bean id="user" class="cn.wh.vo.User">
              <!-- 字符串和基本类型的数据可以直接注入 -->
              <property name="name" value="张三疯"/>
              <property name="age" value="218"/>
          </bean>
    • 数组注入
      <!-- 数组的注入 -->
              <property name="hobbies">
                  <array>
                      <value>乒乓球</value>
                      <value>羽毛球</value>
                      <value>斯洛克</value>
                  </array>
              </property>

      或者

      <!-- 数组的注入 -->
              <property name="hobbies">
                  <list>
                      <value>乒乓球</value>
                      <value>羽毛球</value>
                      <value>斯洛克</value>
                  </list>
              </property>

      注意:list和数组的注入一致。

    • set集合的注入

      <!-- Set集合的注入  重复的数据会自动覆盖-->
              <property name="qqs">
                  <set>
                      <value>261042456</value>
                      <value>78234322</value>
                      <value>8982342</value>
                      <value>8982342</value>
                      <value>898234201</value>
                  </set>
              </property>
    • map的注入
      <!-- map的注入 -->
              <property name="cards">
                  <map>
                      <entry key="6221231212323" value="农业银行"></entry>
                      <entry key="23421341324">
                          <value>工商银行</value>
                      </entry>
                  </map>
              </property>
    • properties的注入
      <!-- properties的注入 -->
              <property name="props">
                  <props>
                      <prop key="height">180cm</prop>
                      <prop key="weight">90kg</prop>
                      <prop key="sanwei">80,80,80</prop>
                  </props>
              </property>
    • 自定义类型的注入
      <!-- 自定义的注入 -->
              <property name="role" ref="role"/>
          </bean>
          <bean id="role" class="cn.wh.vo.Role">
              <property name="id" value="1"/>
              <property name="name" value="管理员"/>
          </bean>
    • Null的注入
      <property name="name"><null/></property>
    • p命名空间注入,需要导入对应的schema头文件
      <beans xmlns="http://www.springframework.org/schema/beans"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xmlns:p="http://www.springframework.org/schema/p"
          xsi:schemaLocation="http://www.springframework.org/schema/beans
              http://www.springframework.org/schema/beans/spring-beans.xsd">

      配置:

      <!-- 使用p命名空间注入 -->
          <bean id="r1" class="cn.wh.vo.Role" p:id="1" p:name="管理员"></bean>
    • c命名空间注入,(新增功能)需要导入对应的schema头文件

      <beans xmlns="http://www.springframework.org/schema/beans"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xmlns:p="http://www.springframework.org/schema/p"
          xmlns:c="http://www.springframework.org/schema/c"
          xsi:schemaLocation="http://www.springframework.org/schema/beans
              http://www.springframework.org/schema/beans/spring-beans.xsd">
    • c命名空间注入,其本质式构造器注入,所以需要对应的构造方法存在。
      <!-- c命名空间注入 -->
          <bean id="r2" class="cn.wh.vo.Role" c:id="1" c:name="管理员"></bean>
  • 相关阅读:
    sort和uniq去重操作【转】
    MySQL中interactive_timeout和wait_timeout的区别【转】
    Keepalived详解(五):Keepalived集群中MASTER和BACKUP角色选举策略【转】
    Keepalived详解(四):通过vrrp_script实现对集群资源的监控【转】
    Keepalived详解(三):Keepalived基础功能应用实例【转】
    Spring详解(六)------AspectJ 实现AOP
    深入理解计算机系统(1.3)------操作系统的抽象概念
    深入理解计算机系统(1.2)------存储设备
    深入理解计算机系统(1.1)------Hello World 是如何运行的
    深入理解计算机系统(序章)------谈程序员为什么要懂底层计算机结构
  • 原文地址:https://www.cnblogs.com/forever2h/p/6740080.html
Copyright © 2011-2022 走看看