实例化 Spring IoC 容器

本文详细介绍了Spring框架的核心容器原理,包括BeanFactory和ApplicationContext接口,以及它们的实现类如ClassPathXmlApplicationContext和AnnotationConfigApplicationContext。重点讲解了如何通过getBean方法获取Bean,以及配置思维从XML转向Java代码的简化过程。
摘要由CSDN通过智能技术生成

实例化 Spring IoC 容器

Spring 核心容器的理论很简单:Spring 核心容器就是一个超级大工厂,所有的单例对象都由它创建并管理

必须创建、实例化 Spring IoC 容器,读取其配置文件来创建 Bean 实例。然后可以从 Spring IoC 容器中得到可用的 Bean 实例。

BeanFactory 「初始」接口
└── ApplicationContext  最常用接口
    └── AbstractApplicationContext  接口的抽象实现类
        ├── ClassPathXmlApplicationContext  具体实现类之一
        └── AnnotationConfigApplicationContext  具体实现类之二

Spring IoC 容器主要是基于 BeanFactoryApplicationContext 两个接口:

老祖宗:BeanFactory 接口

BeanFactory” 是 Spring IoC 容器的顶层接口,它是整个 Spring IoC 容器体系的「老祖宗」。

「老祖宗」接口中定义了我们未来最常用、最关注的方法:“getBean” 方法。

最常用接口:ApplicationContext

ApplicationContext 是未来我们最常用接口。

基于多态之一"接口的引用指向实现类的对象",我们通常会习惯性将引用的类型定义成 ApplicationContext ,然后让它指向它的实现类的对象。

形如:

ApplicationContext context = new 某实现类();

曾经最常用实现类 ClassPathXmlApplicationContext

ClassPathXmlApplicationContext 是 ApplicationContext 的实现类之一。

在 “注解” 和 “基于注解的 Java 代码配置” 流行起来之前,使用 .xml 文件进行配置是最常用,甚至是唯一的配置方式。

ClassPathXmlApplicationContext 它从 classpath 中加载一个或多个 “.xml” 配置文件,构建一个应用程序上下文。

new ClassPathXmlApplicationContext("aaa.xml");
new ClassPathXmlApplicationContext("bbb.xml", "ccc.xml");

现在最常用实现类 AnnotationConfigApplicationContext

AnnotationConfigApplicationContext 是 ApplicationContext 的实现类之一。

AnnotationConfigApplicationContext 和 ClassPathXmlApplicationContext 功能类似,但它需要的是一个配置类或多个配置类,而非配置文件。

new AnnotationConfigApplicationContext(Xxx.class);
new AnnotationConfigApplicationContext(Yyy.class, Zzz.class);

使用 getBean 方法获得 Bean

在获得"应用程序上下文"(ApplicationCotnext,也就是 IoC 容器)后,你只需要调用 “getBean” 方法并传入唯一的 Bean ID 和 Bean 的 Class 对象,就可以获得容器中的 Bean 。

// 大多数情况下 id 非必须
Human tom = context.getBean("tom", Human.class);
// 或
Human tom = context.getBean(Human.class);

配置思维的变化

使用 Java 代码进行 Java Bean 的配置远比使用 XML 配置文件进行要简单很多,因为进行配置的『思维模式』发生了变化:

  • 使用 XML 进行配置,你要面面俱到地『告知』Spring 你要如何如何地去创建、初始化一个 Bean 。

  • 使用 Java 代码进行配置,你只需要提供一个方法,你自己全权(程序员)负责方法的具体实现,并在方法的最后返回一个 Java Bean, Spring 不关心你的方法的实现内容和细节,它只保证未来调用你所写的方法,且只调用一次

在这种思路下,XML 配置的 “很多情况” 在 Java 代码中就被统一成了 “一种情况” ,因此变得更简洁。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值