• Spring 容器


    Spring提供了两个核心接口:BeanFactoryApplicationContext,其中applicationContext是BeanFactory的子接口

    他们都可代表Spring容器Spring容器是生成Bean实例的工厂,并管理容器中的Bean。

    Bean是Spring管理的基本单位,在基于Spring的JavaEE应用中,所有的组件都被当成Bean处理,包括数据源、Hibernate的SessionFactory、事务管理器等。

    BeanFactory:

    Spring容器最基本的接口就是BeanFactory,该接口负责配置、创建,管理Bean,它有一个子接口;AppcationContext,因此也被称为Spring上下文。Spring容器还负责管理Bean与Bean之间的依赖关系。

    调用者只需使用getBean()方法即可获得指定Bean的引用,无须关心Bean的实例化过程。

    BeanFactory有一个常见的实现类:org.springframework.beans.factory.xml.XmlBeanFactory类。

    ApplicationContext是BeanFactory的子接口,对于大部分JavaEE应用而言,使用它作为Spring容器更方便。其常见实现类是:FileSystemXmlApplicationContext、ClassPathXmlApplicationContext和AnnotataionConfigApplicationContext。如果在web应用中使用Spring容器,通常有XmlWebApplicationContext、AnnotatioinConfigWebApplicationContext两个实现类。

    大部分的JavaEE应用,可以在启动WEB应用时自动加载ApplicationContext实例,接受Spring管理的Bean无须知道ApplicationContext的存在,一样可以利用ApplicationContext的管理。对于独立的应用程序,也可通过如下方法来实例化BeanFactory。

    1、

    //搜索当前文件路径下的beans.xml文件创建Resource对象

    InputStreamResource isr = new FileSystemResource(“beans.xml”);

    //以Resource对象作为参数,创建BeanFactory对象

    XmlBeanFactory factory = new XmlBeanFactory(isr);

    或者采用:

    2、

    //搜索类加载路径,以类加载路径下的beans.xml文件创建Resource对象

    ClassPathResource res = new ClassPathResource(“beans.xml”);

    //以Resource对象作为参数,创建BeanFactory对象

    XmlBeanFactory factory = new XmlBeanFactory(res);

    如果需要同时加载多个XML配置文件,则可以采用如下方式:

    //搜索CLASSPATH路径,以CLASSPATH路径下的applicationContext.xml、Bean.xml、Service.xml文件创建ApplicationContext

    ApplicationContext appContext = new ClassPathXmlApplicaation(new String[“beans.xml”,”service.xml”]);

    ApplicationContext:

    ApplicationContext是BeanFactory接口的子接口,它增强了BeanFactory的功能。

    ApplicationContext允许以声明式方式操作容器,无须手动创建它。可利用如ContextLoader的支持类,在WEB应用启动时自动创建ApplicationContext。当前,也可以采用编程方式创建ApplicationContext.

    BeanFactory与ApplicationContext实例化容器中Bean的时机不同,前者等到程序需要Bean实例时才创建,而后者在容器创建ApplicationContext实例时,会预初始化容器中的全部Bean。

    因为采用ApplicationContext作为Spring容器,创建容器时会同时创建容器中所有singleton作用域Bean,因此可能需要更多的系统开销。但一旦创建成功,应用后面的响应速度就会更快,因此,对于普通的JavaEE应用,推荐使用ApplicationContext作为Spring容器。

    实际上Spring允许singleton作用的Bean指定lazy-init=”true”,该属性将改变singleton Bean实例的默认行为,强制取消该Bean实例预初始化,则该Bean将不会随着ApplicationContext启动而预实例化。

  • 相关阅读:
    java-HTML&javaSkcript&CSS&jQuery&ajax
    HTML&javaSkcript&CSS&jQuery&ajax-XSS
    XSS-HTML&javaSkcript&CSS&jQuery&ajax-CSS
    XSS-HTML&javaSkcript&CSS&jQuery&ajax
    HTML&javaSkcript&CSS&jQuery&ajax-Css
    论坛IP地址追踪&路由器密码嗅探
    java ArrayList
    WireShark Flow capture analysis
    Software tips
    301. Remove Invalid Parentheses
  • 原文地址:https://www.cnblogs.com/Spirit612/p/5103780.html
Copyright © 2020-2023  润新知