7 -- Spring的基本用法 -- 4...

Posted limeOracle

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了7 -- Spring的基本用法 -- 4...相关的知识,希望对你有一定的参考价值。

    7.4 使用 Spring 容器

      Spring 有两个核心接口:BeanFactory 和 ApplicationContext,其中ApplicationContext 是 BeanFactory 的子接口。它们都可代表 Spring 容器,Spring 容器是生成 Bean 实例的工厂,并管理容器中的Bean。

      Java 程序面向接口编程,无须关心 Bean 实例的实现类;但 Spring 容器负责创建 Bean 实例,因此必须精确知道每个 Bean 实例的实现类,故Spring 配置文件必须指定 Bean 实例的实现类。

      7.4.1 Spring 容器

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

        BeanFactory 接口包含如下几个基本方法。

          boolean containsBean(String name):判断Spring容器是否包含id为name 的Bean 实例。

          <T> T getBean(Class<T> requiredType):获取Spring容器中属于requiredType类型的、唯一的Bean实例。

          Object getBean(String name):返回容器id为name的Bean实例。

          <T> T getBean(String name,Class requiredType):返回容器中id为name,并且类型为requiredType的Bean。

          Class<?> getType(String name):返回容器中id为name的Bean实例的类型。

        BeanFactory 常用的实现类是DefaultListableBeanFactory。

        ApplicationContext 常用的实现类是FileSystemXmlApplicationContext、ClassPathXmlApplicationContext 和 AnnotationConfigApplicationContext。

        如果在Web应用中使用Spring容器,则通常有XmlWebApplicationContext、AnnotationConfigWebApplicationContext两个实现类。

        创建BeanFactory实例时,应该提供XML配置文件作为参数,XML配置文件通常使用Resource对象传入。

        Resource接口是Spring提供的资源访问接口,通过使用该接口,Spring能以简单、透明的方式访问磁盘、类路径以及网络上的资源。

        大部分Java EE应用,可在启动Web应用时自动加载ApplicationContext实例,接收Spring管理的Bean无须知道ApplicationContext的存在,一样可以利用ApplicationContext的管理。

        对于独立的应用程序,可通过如下方法实例化BeanFactory。

//        搜索类加载路径下的beans.xml 文件创建Resource对象
        Resource isr = new ClassPathResource("beans.xml");
//        创建默认的BeanFactory容器
        DefaultListableBeanFactory beanFactory = new DefaultListableBeanFactory();
//        让默认的BeanFactory容器加载isr对应的XML配置文件
        new XmlBeanDefinitionReader(beanFactory).loadBeanDefinitions(isr);

        或者采用如下代码来创建BeanFactory:

//        搜索文件系统的当前路径下的beans.xml 文件创建Resource对象
        Resource isr = new FileSystemResource("beans.xml");
//        创建默认的BeanFactory容器
        DefaultListableBeanFactory beanFactory = new DefaultListableBeanFactory();
//        让默认的BeanFactory容器加载isr对应的XML配置文件。
        new XmlBeanDefinitionReader(beanFactory).loadBeanDefinitions(isr);

        如果应用需要加载多个配置文件来创建Spring容器,则应该采用BeanFactory的子接口ApplicationContext来创建BeanFactory的实例。

        ApplicationContext接口包含FileSystemXmlApplicationContext和ClassPathXmlApplicationContext两个常用的实现类。

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

//        以类加载路径下的Beans.xml、service.xml文件创建ApplicationContext
        ApplicationContext ctx = new ClassPathXmlApplicationContext("beans.xml","service.xml");

        当然也可支持从文件系统的相对路径或绝对路径来搜索配置文件,只要使用FileSystemXmlApplicationContext即可。

//        以类加载路径下的Beans.xml、service.xml文件创建ApplicationContext
        ApplicationContext ctx = new FileSystemXmlApplicationContext("beans.xml","service.xml");

       7.4.2 使用ApplicationContext

        大部分时候使用ApplicationContext实例作为容器,因此也把Spring容器称为Spring上下文。ApplicationContext是BeanFactory接口的子接口,它增强了BeanFactory的功能。

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

        除了提供BeanFactory所支持的全部功能外,ApplicationContext还有如下额外的功能。

          ApplicationContext默认会预初始化所有singleton Bean,也可通过配置取消预初始化。

          ApplicationContext继承MessageSource接口,因此提供国际化支持。

          资源访问,比如访问URL文件。

          事件机制。

          同时加载多个配置文件。

          以声明式方式启动并创建Spring容器。

以上是关于7 -- Spring的基本用法 -- 4...的主要内容,如果未能解决你的问题,请参考以下文章

7 -- Spring的基本用法 -- 11...

7 -- Spring的基本用法 -- 7...

7 -- Spring的基本用法 -- 8...

Spring Boot 缓存的基本用法

Spring MVC之@RequestMapping基本用法

7天学会springCloud(一) 7个例子与7个周期