zoukankan      html  css  js  c++  java
  • 框架-Spring容器

    1.   Spring Ioc容器

    容器是Spring框架的基础,容器会创建、串联、配置对象,并且能管理对象的整个生命周期。如下是代表 Spring工作原理

     

    MetaData 指定哪些对象实例化、配置、组装;metadata可以是xml文件、注释或者java代码;Spring Ioc容器利用POJO类集合、配置文件Metadata产生一个可配置、可执行的系统或应用。

    Spring提供两大类容器:

    (1)       BeanFactory Container

    定义在org.springframework.beans.factory.BeanFactoryinterfac,提供DI技术的最简单容器;BeanFactory及其相关接口BeanFactoryAware, InitializingBean, DisposableBean 共同支持第三方框架与Spring的整合;

    (2)       ApplicationContext Container

    ApplicationContext 容器支持从properties file解析文本messages、给特定event listeners发布应用事件;容器定义org.springframework.context.ApplicationContext interface。

    ApplicationContext 容器包含所有BeanFactory功能,所以一般使用ApplicationContext ,但是BeanFactory仍然可用于轻量级应用,如 设备或applet-based 应用。

    2.   Bean定义

    Bean是所有Spring Ioc容器管理的应用后台对象。IoC容器读取从配置metadata文件获取bean的定义信息,包含 如何创建bean、bean的生命周期、bean的依赖三方面:

    Class

    此属性是强制的,指定创建bean对象的类

    Name

    指定bean的唯一识别标志;xml配置文件中使用id或name属性

    Scope

    Bean对象的scope

    constructor-arg

    用来注入依赖

    properties

    注入依赖

    autowiring mode

    注入依赖

    lazy-initialization mode

    告诉Ioc容器是在首次调用创建bean实例

    initialization method

    Bean的所有必要属性设置完成后,被回调的函数

    destruction method

    Bean销毁后,被回调的函数

    正如上文提到,提供配置metadata的三种方式:

    • l  Xml配置文件
    • l  注释方式
    • l  Java代码方式

    3.   Bean scope

    singleton

    单例模式,Spring每次返回同一个对象

    prototype

    原型模式,一个bean定义适用于任意多个对象实例

    Request

    一个bean定义适用于 Http请求

    Session

    一个bean定义适用于HTTP session

    global-session

    一个bean定义适用于global HTTP session

    4.   Bean生命周期

    Bean创建后,需要完成初始化;bean从容器移除后,需要执行清理动作;

    Initialization callbacks

    接口org.springframework.beans.factory.InitializingBean 方法afterPropertiesSet()定义初始化;

    public class ExampleBean implements InitializingBean {

       public void afterPropertiesSet() {

          // do some initialization work

       }

    }

    或者

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

    Init-method 属性指定初始化方法 名称;

    public class ExampleBean {

       public void init() {

          // do some initialization work

       }

    }

    5.   Bean post process(后处理)

    BeanPostProcessor后处理 接口定义的回调函数,支持可定制的实例化逻辑、依赖逻辑等。用户可通过插入一个或多个“后处理”实现,定制化bean实例。

    6.   Bean 定义继承

    Bean定义中包含的配置信息、构造参数、属性值,以及容器指定信息 如初始化方法、静态工厂名称等,都可以通过继承方式 child bean获得。这里的“继承”与Java中的“继承”没有任何关系,但含义是一样的。

    Bean 模板beanTeamplate,指定 abstract属性为 true,不能指定class

    <bean id = "beanTeamplate" abstract = "true">

          <property name = "message1" value = "Hello World!"/>

          <property name = "message2" value = "Hello Second World!"/>

          <property name = "message3" value = "Namaste India!"/>

       </bean>

    <bean id = "helloIndia" class = "com.tutorialspoint.HelloIndia" parent = "beanTeamplate">
          <property name = "message1" value = "Hello India!"/>
          <property name = "message3" value = "Namaste India!"/>
       </bean>
  • 相关阅读:
    Shell IFS
    Crontab
    linux awk
    free
    条件语句练习2
    条件语句练习
    打印菜单
    条件测试语法
    read 命令
    jQuery(实例)
  • 原文地址:https://www.cnblogs.com/albertarmstrong/p/10094120.html
Copyright © 2011-2022 走看看