码迷,mamicode.com
首页 > 编程语言 > 详细

Spring IOC容器

时间:2015-06-01 06:10:57      阅读:197      评论:0      收藏:0      [点我收藏+]

标签:

1、什么是Spring
  Spring是一个开源的轻量级框架,其目的是用于简化企业级应用程序开发,减少侵入;
  Spring提供的IOC和AOP应用,可以将组件的耦合度降至最低,即解耦,便于系统日后的维护和升级;
  Spring为系统提供了一个整体的解决方案,开发者可以利用它本身提供的功能外,也可以与第三方框架和技术整合应用,
  可以自由选择采用哪种技术进行开发。

  为什么要使用Spring?

    Spring的本质是管理软件中的对象,如何创建对象和维护对象之间的关系

2、Spring容器简介

  在Spring中,任何的Java类和JavaBean都被当成Bean处理,这些Bean通过容器管理和应用。

  Spring容器实现了IOC和AOP机制,这些机制可以简化Bean对象创建和Bean对象之间的解耦;

  Spring容器有BeanFactory和ApplicationContext两种类型;

  什么是JavaBean:

    一种简单规范的Java对象

  何时使用Spring?

    当需要管理JavaBean对象的时候就可以使用,Spring是最简洁的管理方案之一

3、Spring容器的实例化  如何创建对象

    ApplicationContext继承BeanFactory,拥有更多的企业级方法,推荐使用该类型,实例化如下:

    //加载文件系统中的配置文件实例化

    String conf="C:\applicationContext.xml";

    ApplicationContext ac=new FileStystemXmlApplicationContext(conf);

    //加载工程classpath下的配置文件实例化

    String conf="applicationContext.xml";

    ApplicationContext ac=new ClassPathXmlApplicationContext(conf);

    如何使用Spring?

      遵守Spring定义的规则,基于配置和默认规则,减少代码的书写

4、Spring容器的使用

  从本质上讲,BeanFactory和ApplicationContext仅仅只是一个维护Bean定义以及相互依赖关系的高级工厂接口。通过BeanFactory和ApplicationContext我们可以访问Bean定义

  首先在容器配置文件applicationContext.xml中添加Bean定义。

  <bean id="标识符" class="Bean类型"/>

  然后在创建BeanFactory和ApplicationContext容器对象后,调用getBean()方法获取Bean的实例即可

    getBean("标识符")

5、Bean的实例化

  Spring容器创建Bean对象的方法有以下3种

    用构造器来实例化

    使用静态工厂方法实例化

    使用实例工厂方法实例化

  将对象创建规则告诉Spring,Spring会帮助你去创建对象;

  基于配置和默认规则,减少了代码的书写!

6、Bean的实例化

  用构造器来实例化

    <bean id="calendarObj1" class="java.util.GregorianCalendar"/>

    <bean name="calendarObj2" class="java.util.GregorianCalendar"/>

    id或name属性用于指定Bean名称,用于从Spring中查找这个Bean对象

    class用于指定Bean类型,会自动调用无参数构造器创建对象

  使用静态工厂实例化

    <bean id="calendarObj2" class="java.util.Calendar" factory-method="getInstance"/>

    id属性用于指定Bean名称;

    class属于用于指定工厂类型

    factory-method属性用于指定工厂中创建Bean对象的方法,必须用static方法。

  使用实例工厂方法实例化

    <bean id="calendarObj3" class="java.util.GregorianCalendar"/>

    <bean id="dateObj" factory-bean="calendarObj3" factory-method="getTime"/>

    id用于指定Bean名称;

    factory-bean用于指定工厂Bean对象;

    factory-method属性用于指定工厂中创建Bean对象的方法

7、Bean的命名

  Bean的名称

    在Spring容器中,每个Bean都需要有名字(即标识符),该名字可以用<bean>元素的id或name属性指定

    id属性比name严格,要求具有唯一性,不允许用"/"等特殊字符

  Bean的别名

    已定义好的Bean,再增加另外的一个名字应用可以使用<alias>指定

    <alias name="fromName" alias="toName"/>

8、Bean的作用域

  Spring容器在实例化Bean时,可以创建一下作用域的Bean对象

  上面的Bean作用域,可以通过<bean>定义的scope属性指定

9、Bean的声明周期回调

  指定初始化回调方法

  <bean id="exampleBean" class="" init-method="init"></bean>

  指定销毁回调方法,仅适用于singleton模式的Bean

  <bean id="" class="" destory-method="destory"></bean>

  提示:指定销毁回调方法,仅使用于singletion模式的bean

  Spring会管理对象的创建过程

  在顶级的<beans/>元素中的default-init-method属性,可以为容器所有<bean>指定初始化回调方法

  <beans dafault-init-method="init">

  </beans>

  在顶级的<beans/>元素中的default-destory-method属性,可以为容器所有<bean>指定初始化回调方法

10、Bean延迟实例化

  在ApplicationContext实现的默认行为就是在启动时将所有singletion Bean提前进行实例化

  如果不想让一个singletion bean在ApplicationContext初始化时被提前实例化,可以使用<bean>元素的lazy-init="true"属性改变

  一个延迟初始化bean将在第一次被用到时实例化

  <bean id="" lazy-init="true" class=""/>

  在顶级的<beans/>元素中的default-lazy-init属性,可以为容器所有<bean>指定延迟实例化特性

11、指定bean依赖关系

  当一个Bean对另一个Bean存在依赖关系时,可以利用<bean>元素的depends-on属性指定

  <bean id="" class="" depends-on="manager"/>

  <bean id="manager" class="" />

  当一个Bean对多个bean存在依赖关系时,depends-on属性可以指定多个bean名,用逗号隔开

12、IOC概念

 

  

Spring IOC容器

标签:

原文地址:http://www.cnblogs.com/Crow00/p/4543086.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!