Spring Ioc学习(一)

2014-11-23 21:55:47 · 作者: · 浏览: 5

包含内容:什么是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下,前面的斜杠可以带可以不带,但一般不建议有。

容器使用:

\

配置文件中,每个 都是一个BeanDefinition 对象,对于bean的定义有一下属性:

\


对bean的实例化:

1.最最基本的配置:

\


2.通过静态工场方法:

\

3.通过实体工场方法:< http://www.2cto.com/kf/ware/vc/" target="_blank" class="keylink">vcD4KPHA+PGltZyBzcmM9"https://www.cppentry.com/upload_files/article/76/1_koqsp__.jpg" alt="\">

\

依赖注入:

\

由上可知:依赖注入可以通过三种方式进行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接口

这种情况感觉使用比较少,就不看了。