spring的学习(三)

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来完成。

实现:

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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值