天天看点

Spring的IOC

      spring的IOC:Inversion of control控制反转。这个字面有点拗口,控制反转,其实就是把javaBean的创建,初始化,销毁等工作交给Spring容器来完成。原始的做法一个javaBean通过编译成java的字节码,通过虚拟机加载方式来完成方法的调用。但现在有了spring容器,这些工作都不要做了。我们只要javaBean,然后通过spring的applicationContext.xml或bean.xml这个配置文件,来管理,就可以完成这个bean的创建等工作。

      spring容器中bean创建

      有三种方案能完成bean的创建,利用默认的构造函数来创建,这种方式最为常用;利用静态的工厂方法;利用实例工厂方法。

      bean的创建时机:1.默认情况下,在spring启动的时候,会创建spring容器中的所有单利的bean。在spring容器启动的时候,可以检查错误,但是如果bean的属性有数据,会过早的加载到内存中。所以如果bean中有了数据,应把数据的对象声明放入方法中。2.如果在spring的配置文件中有lazy-init为ture。则在spring启动的时候不会马上加载,而是到context.getBean("beanId");时才创建。这种做法有一种缺点:在spring容器启动的时候不会检查出错误的。

      对象的作用域:在配置文件中有scope属性。1、如果该属性值为singleton。spring产生的bean只有一个实例。处于单利模式的bean的创建,初始化,销毁都是有Spring容器所管理。容易关闭时执行销毁方法。2.如果该属性是“prototype‘.该对象是以多例形式创建的。spring容易负责执行该对象的创建,初始化,而销毁工作则有程序员自己来做。无论该bean的lazy-init的值为什么。都是在context.getBean时创建对象。

      init和destroy方法

      这两个方法同样是在配置文件可以配,init-method和destroy-method。init方法是在构造函数执行完毕后执行这个方法。destroy在spring容器销毁后才执行该方法。