spring(一)

spring——Ioc

  IOC也称为控制与反转(Inversion of Control,英文缩写为IoC),是spinrg两大核心基础+重点知识之一。他具有一下优点:

  1.方便解耦,简化开发:通过spring提供的ioc容器,我们可以将对象之间的依赖关系交给spring进行控制,避免编码所造成的程序的过度耦合,用户不必不在为单例模式、类、属性、文件解析等这些底层的需求编码,可以专注上层的应用。

  2.声明事物的支持:可以通过声明的方式灵活的进行事物管理,提高开发效率和质量。

  3.方便程序测试:测试不再是昂贵的操作,可以通过非容器依赖的编程方式进行几乎所有的测试工作。

  4.集成各种优秀的框架

  Ioc的理解:Ioc并非新的技术而是一种编程思想。

  1.谁控制谁:在传统编程中,我们通过对象内部new出对象,是程序主动依赖对象,这样造成了程序的过度耦合,不利于维护;Ioc提供了一个容器为我们创建对象的机制。理所当然的理解为:ioc容器为我们创建对象,ioc控制对象的创建:ioc控制了外部资源的获取。

  2.反转,什么被反转了?:传统编程中,开发者是通过对象内部new出对象,对象的创建是主动,这是一种正转(假如对象是老大,开发者就是小弟。小弟为老大服务(new))。Ioc控制对象创建后,是被Ioc控制,对象创建是被动(对象是不是老大,Ioc说了算,Ioc有外部资源为对象注入,对象就是老大,否则对象就不是老大)。因此,控制反转是一种编程思想

  DI(依赖与注入):组件与组件直接的关系,是容器运行时候决定的(动态的),依赖注入的目的是为了提升组件的重用的频率

  1.不需要关系组件的的具体资源来源,能更专注于业务开发。

  2.系统(程序)更灵活,平台更易于扩展。

  DI——的深入浅出:

  1.谁依赖谁?:程序依赖Ioc容器

  2.谁注入谁?:Ioc容器对程序的注入,注入什么?为程序注入对象或者注入外部资源。

  结论:IOC与DI(即:控制反转与依赖注入)是一种相对性的编程思想,是紧密相连的,是同种技术不同角度的思考。

  IOC代码实战:

  1.IOC所需要的包:4+1(四个spring包+commons的依赖包)

  

  2.我们需要创建一份xml文件,文件的标准命名:applicationContext.xml放在src目录下即可;

  3.创建一个User实体类,成员变量分别是:name,age;提供一个无参的构造方法+有参的构造方法,别忘了还有set/get方法。

  准备就绪:

  ①无参构造方法,实例化对象:

  

  

  解释:控制台上打印了对象的地址,说明对象成功被IOC容器创建。从xml文件看,只是简单的配了一个javaBean(外部资源),id:javaBean的唯一标识,class:User这个类的全限类名。IOC是通过无参构造方法创建对象的,如果没有无参的构造方法则产生异常,无法成功创建对象;IocTest测试类:首先要获取xml的文件路径,通过获取容器中的javaBean即可以获取一个已经被创建的对象。

  ②有参的构造方法,实例化对象:

  

 

  解释:在无参的xml中添加两个元素<constructor-age />,name属性的值必须是User这个类里面的相对匹配有参构造方法参数名称,value属性是给参数赋值。

  ③set/get方式,实例化对象:

  

  解释:更改两个元素<property>,name属性的值必须是User类的存在成员变量的名称,同理value属性是给成员变量赋值。

  DI代码实战

  1.准备一个实力类(Car),成员变量name,address。提供set/get方法,并且通过IOC创建Car对象并且给成员变量赋值。

  

  ①依赖注入,一步到位:

  在User 类添加Car类型的成员变量,并且为该变量提供set/get方法。在xml文件中添加元素<property> name属性引用 car的javaBean.(按图顺序)

  

  

                                    

                          没有最终的成功,也没有致命的失败,最可贵的是继续前进的勇气。

 

 

 

  

 

 

   

                       

  

 

posted @ 2018-03-10 15:29  白夜丶  阅读(257)  评论(0编辑  收藏  举报