spring的学习(三)

    xiaoxiao2021-03-25  83

    DI(依赖注入)

     概念:给属性赋值

    property用来描述类的属性

        name代表属性的名称

        value代表属性的值属性为基本类型

        对于引用类型用<ref bean="" />赋值

    Setter方法

           

    说明:1、spring容器实例化person和student两个对象

          2、利用java的反射机制调用属性的setter方法赋值

          3、在客户端利用context.getBean方法把spring容器中的一个对象获取了。

    说明:

    1、启动spring容器

    2、实例化person对象和student对象

    3、给person中的属性赋值

    4、调用person的init方法初始化

    5、客户端利用context.getBean获取对象

    说明:

    1、启动spring容器

    2、实例化person对象

    3、因为person对象依赖于student对象,所以在实例化person对象的时候必须实例化student对象,所以这个时候,在student对象上的lazy-init为true将失效

    说明:1、  启动spring容器

               2、  实例化student

               3、  在客户端执行context.getBean方法获取person对象

               4、  实例化person对象,调用person的构造函数

               5、  调用person中的setStudent方法,给person中的student赋值

               6、  执行person中的init方法

               7、  Person对象调用方法

    构造器赋值:

    说明:

    1.constructor-arg代表指定的构造器函数中的一个参数

    2.可以利用index,ref,value,type来制定唯一的构造器

    3.如果一个bean的配置中没有constructor-arg属性,则必须利用默认的构造器创建对象

    4.所以写一个javabean的时候,应该提供属性的setter方法,默认的构造方法,带参数的构造器

     

    IOC和DI的意义

    案例一:

    需求:编写一个文档管理系统,在系统中有如下的结构;

                1.DocumentInterface

                       readDocument

                        writeDocument

                2.WordDocument是Document的实现类

                    readDocument

                    writeDocument

                 3.ExcelDocument

                    readDocument

                    writeDocument

                4.pdfDocument

                    writeDocument

                    readDocument

    做法一:

    说明:上述的代码是不完全的面向接口编程

    做法二:

    说明:在代码段没有出现具体的实现类,完全的面向接口编程

    在spring的配置文件中决定了documentManager中的接口实现类是什么。而这个过程和java的代码端是没有任何关系的。

    案列二:

    需求:把action调用service,service调用dao用spring来完成。

    实现:

    意义:实现了完全的面向接口编程,在代码端没必要关心一个接口的实现类是什么。

     

    转载请注明原文地址: https://ju.6miu.com/read-33281.html

    最新回复(0)