Spring2.Ioc容器

版权声明:本文为柠檬需要糖原创文章,未经博主允许不得转载。 https://blog.csdn.net/gxy1317/article/details/52528107
Ioc容器

什么是IoC
       IoC就是控制反转,也被称为依赖注入(DI),是面向对象编程中的一种设计理念,用来减少程序代码之间的耦合度。
       控制反转:例如我们现在有一个A类和一个B类,A类想调用B类中的方法就要先new B类对象(静态方法除外),这种情况,我们自己控制对象的创建。坏处是无法分开来开发,必须先开发出B类然后才可以开发A类。当然我们也可以先顶一个接口,然B类实现这个接口,这样也可以协作开发。但是这样的坏处是,我们现在不想使用B类,而是想使用BB这个类,我们就需要找源码,重新编译程序。而是用Spring的IoC容器,就可以帮助我们管理好我们写的类(组建),将创建类实例的控制权交给IoC容器,让容器帮助我们创建和管理,我们只需要从容器中取出对象就可以,这样当我们想更换模块的时候,我们只需要修改容器的配置文件就可以。
       依赖注入:当容器帮我们创建对象的时候,会为这个对象注入属性值或其他对象实例。
注意:被IoC容器管理的java类都称为Bean。


将javaBean放入IoC容器

创建类(Print.class)

此类当中有一个name属性和一个show()方法
配置Xml


这里是一个比较简单的例子,上面说过通过IoC容器管理的javaBean都称为Bean,所以这里用<bean></bean>标签,每一个标签代表一个类。id属性表示协作对象,用于获取容器给我们创建的对象,class属性定义了bean的类型。
使用<property />用来指定它的属性,name属性为类的属性名,value属性为初始值(可以不写),当Spring创建IoC容器的时候,会通过你的xml文件参数来做一些初始化工作。也可以通过ref属性来赋值对象。

实例化容器

ApplicationContext接口代表Spring IoC容器,负责实例化、配置和装配Bean。可以通过 ClassPathXmlApplicationContext 或FileSystemXmlApplicationContext创建实例。
getBean()方法,根据id值获取IoC容器中的对象,返回值类型为Object需要向下转型。注意:ApplicationContext在初始化的时候就会实例化单例的Bean。
ClassPathXmlApplicationContext是ApplicationContext的实现类,从类路径下加载配置文件。



Configuration metadata:Spring IoC容器 配置元数据 ; 这个配置元数据代表你如何为应用程序开发者告诉Spring容器来实例化,配置和应用程序中的装配对象。

总结:
    控制反转:就是将创建对象实例的权限交给 spring容器来处理,我们使用的时候直接通过容器的标示来获取对象
    依赖注入:降低 各个组件的依赖关系,我们可以提供接口同时开发这些组件,到时候进行整合就可以。

开闭原则
   开:开放扩展
   必:不修改源代码


Bean的作用域

singleton:(默认值)在Spring IoC容器中只创建一个对象实例,要使用bean的时候都会获取这一个


prototype:每次使用到此bean的时候都会创建一个新的实例



request:bean的生命周期只作用于HTTP请求

sessionbean的生命周期只作用于Session

globalSessionbean的生命周期只作用于全局Session,并且仅适用于基于portlet的web应用程序

applicationbean的生命周期只作用于全局ServletContext

websocket:作用域一个bean定义到的WebSocket的生命周期。只有在基于web的Spring ApplicationContext情形下有效。

使用方法:

<bean id="appPreferences" class="com.foo.AppPreferences" scope="application"/>
将scope属性换成你想使用的作用域



生命周期回调
我个人比较喜欢理解成,在创建对象或销毁时立即执行某个方法。
<bean id="exampleInitBean" class="examples.ExampleBean" init-method="init" />
<bean id="exampleInitBean" class="examples.ExampleBean" destroy-method="cleanup"/>
其中 init-method属性表明对象创建后执行的方法,destroy-method属性表明对象销毁时执行那个方法。当然方法名可以随意。


展开阅读全文

没有更多推荐了,返回首页