IOC/DI部分

一、IOC

1 中文名称:控制反转

2.英文名称:( Inversion of Control )

3.IoC 是什么

  3.1 IoC 完成的事情原先由程序员主动通过 new 实例化对象事情,转交给 Spring 负责

  3.2 控制反转中控制指的是:控制类的对象.

  3.3 控制反转中反转指的是转交给 Spring 负责.

  3.4 IoC 最大的作用:

  3.4.1 程序员不需要管理对象.解除了对象管理和程序员之间的耦合.

4、Spring的使用

  4.1  导包需要导入一下4个包和一个logging的日志包

    

 

 

   4.2  在根目录下创建 applicationContext.xml,applicationContext.xml 中配置的信息最终存储到了 AppliationContext 容器中

  4.3 spring 配置文件是基于 schema,每引入一个 xsd 文件是一个 namespace(xmlns)

  4.4  对象的创建

    4.4.1 通过<bean></bean>创建对象.

      属性:id是Bean的唯一标识,要求在整个配置文件中要唯一,

         也可使用name属性,bean标签里面的id和name属性都可以用来标识这个配置的对象,

         但是id会帮我们检查给对象起的名字是否规范(名字不能重复、不能用数字开头、不能有空格等等),

         如果检查出来了那么就会报错name属性不会帮检查这些东西

      property 对于所有用set方式来注入的必须使用该标签
        value 是对于基本类型,都用value(标签/属性)来注入,可以实现自动的数据类型转换
    4.4.2 默认配置文件被加载时创建对象

    4.4.3  Bean标签创建对象的三种方式

      4.4.3.1:通过构造方法创建

1 <property name="id" value="1"></property>
2 <property name="name" value="Tom"></property>
3 <property name="sex" value="男"></property>

      1>默认使用无参构造器,注入时使用property标签,name属性为setter方法去掉set后首字母小写,value为要注入的值,ref为引用其他bean标签

         若其中有属性为set,array,list,map,Properties时,则不要value属性,为property添加对应的字标签

          在value内部再添加对应类型的字标签,用以赋值,分别为set,array,list,map,props

 

 1 <bean id="other" class="com.briup.test.Other">
 2                <property name="pros">
 3                    <props>
 4                        <prop key="a">5</prop>
 5                        <prop key="b">9</prop>
 6                        <prop key="c">7</prop>
 7                    </props>
 8                </property>
 9                <property name="map">
10                    <map>
11                        <entry key="q" value="1"></entry>
12                        <entry key="w" value="3"></entry>
13                        <entry key="r" value="8"></entry>
14                        <entry key="k" value="0"></entry>
15                    </map>
16                </property>
17                <property name="str">
18                    <array>
19                        <value>1</value>
20                        <value>2</value>
21                        <value>3</value>
22                        <value>4</value>
23                    </array>
24                </property>
25                <property name="list">
26                    <list>
27                        <value>哈哈</value>
28                        <value>呵呵</value>
29                        <value>天天</value>
30                        <value>打的</value>
31                        <value>啊啊</value>
32                    </list>
33                </property>
34                <property name="set">
35                    <set>
36                        <value>问我</value>
37                        <value>uu</value>
38                        <value>看看</value>
39                        <value>是谁的</value>
40                        <value>啊啊啊</value>
41                    </set>
42                </property>
43        </bean>

 

 

 

      2>使用有参构造器时,将property表签换为constructor-arg,

        属性:index:参数索引,(从0开始)

           name:参数名,

           type:参数类型。

        以上三个旨在唯一确定一个参数,无需同时出现value为要注入的值,ref为引用(若同时匹配多个构造器,默认使用最后一个)

      4.4.3.2:通过实例工厂创建

        用到的属性:name或id,作为Bean的唯一标识,

              factory-bean:创建类所用到的实例化工厂的id,

              factory-method:用来创建对象的方法

      4.4.3.3:通过静态工厂创建

        若实例工厂中,创建对象的方法为静态方法,则只需要在创建工厂对象时添加factory-method属性,指定对应的静态方法即可

二、DI

1. DI:中文名称:依赖注入

2. 英文名称(Dependency Injection )

3. DI 是什么?

  3.1 DI 和 IoC 是一样的

  3.2 当一个类(A)中需要依赖另一个类(B)对象时,把 B 赋值给 A 的过程就叫做依赖注入.

4、具体使用

  在IOC注入时,属性为另一个对象,(该对象使用bean已经创建好),只需要使用ref属性调用该bean的id即可

 

posted @ 2019-10-28 16:13  七月流星丶  阅读(147)  评论(0编辑  收藏  举报