Spring框架的主要功能是通过其核心容器来实现的。Spring提供了2种核心容器:BeanFactory、ApplicationContext。

BeanFactory

BeanFactory是一个管理Bean的工厂,主要负责初始化各种Bean,并调用它们的声明周期方法。

BeanFactory由BeanFactory接口定义。BeanFactory接口的常用实现类:XmlBeanFactory类。

创建一个BeanFactory的实例:

   Resource resource=new FileSystemResource("D:/test/src/applicationContext.xml");
    BeanFactory beanFactory=new XmlBeanFactory(resource);

创建一个Spring容器,并使用xml配置文件来初始化容器。参数是Resource类型,指定容器的配置文件。

因为要使用绝对路径,不方便程序移植,不推荐使用。

ApplicationContext

ApplicationContext是BeanFactory的子接口,被称为应用上下文。除了有BeanFactory的全部功能,还提供了对国际化、资源访问、事件传播等的支持,经常用这个。

ApplicationContext接口有2个常用的实现类:

  • ClassPathXmlApplicationContext类    //使用相对路径,最常用,推荐
  • FileSystemXmlApplicationContext类    //使用绝对路径,不推荐

创建示例:

   ApplicationContext applicationContext=new ClassPathXmlApplicationContext("applicationContext.xml");
   FileSystemXmlApplicationContext applicationContext=new FileSystemXmlApplicationContext("D:/test/src/applicationContext.xml");

BeanFactory和ApplicationContext都是通过xml配置文件加载Bean的,二者的主要区别:

  • BeanFactory:如果Bean的某个属性没有注入,使用getBean()方法时会抛出异常
  • ApplicationContext:在创建容器时会自检,检查Bean所依赖的属性是否注入。

一般都是优先选择使用ApplicationContext,资源较少时才考虑使用BeanFactory。

创建Spring容器后,就可以获取容器中的Bean了:

  • Object  getBean(String  name)    //通过Bean的id或者name来获取Bean,返回值是Object类型,需要强制类型转换
  • <T>  getBean(String name, Class<T>  requiredType)   //第二个参数指定该Bean的类,这样返回值就是该类型的,不必转换类型。

Spring的核心容器的更多相关文章

  1. Spring之核心容器bean

    摘要:Spring的核心容器实现了Ioc,其目 的是提供一种无侵入式的框架.在本文中,首先讲解了Spring的基础bean的相关知识,然后介绍了Spring是如何对bean进行管理的. 在Spring ...

  2. 【Spring】 Spring的核心容器

    Spring的核心容器 文章目录 Spring的核心容器 BeanFactory ApplicationContext 1.通过ClassPathXmlApplicationContext创建 2.通 ...

  3. spring的核心容器ApplicationContext

    //bean.xml配置文件 <?xml version="1.0" encoding="UTF-8"?><beans xmlns=" ...

  4. Spring学习总结(6)——Spring之核心容器bean

    一.Bean的基础知识 1.在xml配置文件中,bean的标识(id 和 name) id:指定在benafactory中管理该bean的唯一的标识.name可用来唯一标识bean 或给bean起别名 ...

  5. 初识Spring——Spring核心容器

    一. IOC和DI基础 IOC-Inversion of Control,译为控制反转,是一种遵循依赖倒置原则的代码设计思想. 所谓依赖倒置,就是把原本的高层建筑依赖底层建筑“倒置”过来,变成底层建筑 ...

  6. spring技术核心概念纪要

    一.背景 springframework 从最初的2.5版本发展至今,期间已经发生了非常多的修正及优化.许多新特性及模块的出现,使得整个框架体系显得越趋庞大,同时也带来了学习及理解上的困难. 本文阐述 ...

  7. 获取spring的IOC核心容器,并根据id获取对象

    public class Client { /** * 获取spring的IOC核心容器,并根据id获取对象 * ApplicationContext的三个常用实现类 * classPathXmlAp ...

  8. Spring的核心之IoC容器创建对象

    Spring的Ioc容器,是Spring的核心内容: 作用:对象的创建和处理对象的依赖关系. Spring容器创建对象有以下几种方式: 1:调用无参数的构造器 <!-- 默认无参的构造器 --& ...

  9. spring核心容器

    容器:用来包装或装载物品的储存器 web服务器与jsp.servlet的关系: 从程序文件存放的位置 程序文件要放到web服务器上 从程序执行的方式  程序的从初始化到消亡都是web服务器管理的 从以 ...

随机推荐

  1. SpringMVC异步处理 可使用的返回值类型

    CallableMethodReturnValueHandler Callable.class.isAssignableFrom(returnType.getParameterType()); Def ...

  2. Java类成员初始化顺序

    类中包含7中成员:1.静态变量 static2.final静态常量 final static3.静态代码块 static{}  //多个代码块顺序执行 4.普通变量5.普通代码块 {}  //多个代码 ...

  3. 查看apache httpd server中加载了哪些模块

    说明: 有的时候,需要查看当前apache中都加载了哪些模块,通过以下命令进行查看 [root@hadoop1 httpd-]# bin/apachectl -t -D DUMP_MODULES Lo ...

  4. docker试水

    1.清理旧版本yum remove docker \                  docker-common \                  docker-selinux \        ...

  5. Linux 提示更新密码

    You are required to change your password immediately (password aged)Last login: Thu Aug 22 17:04:01 ...

  6. 初识内存挂:VirtualNES金手指教程

    一.什么VirtualNES?什么是金手指? VirtualNES是一个NES模拟器,用来运行.nes文件,即在电脑上玩当年小霸王游戏机上的游戏.而它内置了一个简单的Cheat Engine,称之为金 ...

  7. 仿简书MarkDown编辑器可同步滚动

    模仿简书的MarkDown编辑器,使用Angular8写的示例 1.支持同步滚动 编辑的过程中,右侧预览界面会同步滚动.滚动右侧预览界面,左侧编辑区也会同步滚动哦 2.支持语法高亮 如下: using ...

  8. 搭建ELK日志分析平台

    (上)—— ELK介绍及搭建 Elasticsearch 分布式集群 http://blog.51cto.com/zero01/2079879 (下)—— 搭建kibana和logstash服务器 h ...

  9. webapi+swagger ui 文档描述

    代码:GitHub swagger ui在我们的.NET CORE和.NET Framework中的展现形式是不一样的,如果有了解的,在.NET CORE中的是比.NET Framework好的.两张 ...

  10. mysql新增用户无法授权!? 解决方案

    先上解决方法  :) 创建用户cat 密码 CREATE USER '; 修改user表中的注册用户cat update user set host='%' where user='cat'; 授权: ...