• 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>
  • 相关阅读:
    java 闭包(转)
    设计模式之工厂
    java研发工作组环境架设
    [每日一题jQuery] jQuery选择器总结:进一步过滤、同级操作、后代操作
    [工具] 解决sublime text运行javascript console无输出问题
    [工具]web开发时自动刷新网页:liveReload
    [每日一题JS] 正则表达式
    [工具]sublime text2前端开发利器
    |原创|unity 4.3 2D功能SpriteRenderer修改颜色的方法
    unity 获取系统时间
  • 原文地址:https://www.cnblogs.com/forever2h/p/6740080.html
Copyright © 2020-2023  润新知