首页 > 代码库 > Spring Ioc学习(一)
Spring Ioc学习(一)
包含内容:什么是Ioc,作用,bean的创建,方式,配置,集合,作用域,不同作用与的bean依赖等
Ioc控制反转(Inversion of Control) 也被叫作DI依赖注入(Dependency Injection).在程序设计中经常使用到组合的形式,就是在一个类中使用到其他类的对象。Ioc就是用来当这个类实例化时,它里面所使用到的相关对象也会被实例化。实例化的方式有①构造器参数②方法参数③属性。
Spring容器启动是通过BeanFactory或ApplicationContext读取配置文件,该配置文件基本配置如下:
实例化容器方法:
ApplicationContext context = new ClassPathXmlApplicationContext(new String[]{"service.xml","daos.xml"});
service.xml代码如下:
daos.xml代码如下:
由配置文件可知PetStroreServiceImpl有两个成员变量SqlMapAccountDao和SqlMapItemDao
这样在创建PetStroreServiceImpl时,Spring Ioc也会实例化另外两个实例变量。
可以通过import属性,将配置文件分开,便于管理。
注意文件的位置,service.xml使用的相对路径必须在当前目录下有service.xml文件.对于messageSource.xml和themeSource.xml必须在resources下,前面的斜杠可以带可以不带,但一般不建议有。
容器使用:
配置文件中,每个<bean>都是一个BeanDefinition 对象,对于bean的定义有一下属性:
对bean的实例化:
1.最最基本的配置:
2.通过静态工场方法:
3.通过实体工场方法:
依赖注入:
由上可知:依赖注入可以通过三种方式进行1.构造器参数;2工厂方法参数;3属性注入。
通过方法注入。大多数应用场景中我们使用到的bean是单例的,但是存在一种情况,就是一个单例的类中含有某个非单例的成员变量。
Bean的作用域:
当定义一个Bean的作用域定义为Singleton时,spirng Ioc容器会创建一个实例放入缓存中,对于所有的请求将都会返回缓存中的这个Bean。且spring默认bean为单例。
Prototype作用域:
Spirng容器不管理prototype Bean的整个生命周期。
在一个单例的bean里面拥有prototype-bean:
Request,Session,Global Session三个作用域是结合web之后才有的作用域。初始化web配置:
web不同作用域间的bean的相互依赖定义:
下面这种情况与上面对比:注意不同
自定义作用域需要实现org.springframework.beans.factory.config.Scope接口
这种情况感觉使用比较少,就不看了。