1.2.1 使用应用上下文

Spring 自带了多种类型的应用上下文。下面罗列的几个是你最有可能遇到的。

  • AnnotationConfigApplicationContext:从一个或多个基于 Java 的配置类中加载 Spring 应用上下文。

  • AnnotationConfigWebApplicationContext:从一个或多个基于 Java 的配置类中加载 Spring Web 应用上下文。

  • ClassPathXmlApplicationContext:从类路径下的一个或多个 XML 配置文件中加载上下文定义,把应用上下文的定义文件作为类资源。

  • FileSystemXmlapplicationcontext:从文件系统下的一 个或多个 XML 配置文件中加载上下文定义。

  • XmlWebApplicationContext:从 Web 应用下的一个或多个 XML 配置文件中加载上下文定义。

当在第 8 章讨论基于 Web 的 Spring 应用时,我们会对 AnnotationConfigWebApplicationContext 和 XmlWebApplicationContext 进行更详细的讨论。现在我们先简单地使用FileSystemXml-ApplicationContext 从文件系统中加载应用上下文或者使用 ClassPathXmlApplicationContext 从类 路径中加载应用上下文。

无论是从文件系统中装载应用上下文还是从类路径下装载应用上下文,将 bean 加载到 bean 工厂的过程都是相似的。例如,如下代码展示 了如何加载一个 FileSystemXmlApplicationContext:

FileSystemXmlApplicationContext.java
ApplicationContext context = new FileSystemXmlApplicationContext("c:/knight.xml");

类似地,你可以使用 ClassPathXmlApplicationContext 从应用的类路径下加载应用上下文:

ClassPathXmlApplicationContext.java
ApplicationContext context = new ClassPathXmlApplicationContext("knight.xml");

使用 FileSystemXmlApplicationContext 和使用 ClassPathXmlApplicationContext 的区别在于:FileSystemXmlApplicationContext 在指定的文件系统路径下查找 knight.xml文件;而 ClassPathXmlApplicationContext 是在所有的类路径(包含 JAR 文件)下查找 knight.xml 文件。

如果你想从 Java 配置中加载应用上下文,那么可以使用 AnnotationConfigApplicationContext:

AnnotationConfigApplicationContext.java
ApplicationContext context = new AnnotationConfigApplicationContext(com.springinaction.knights.config.KnightConfig.class);

在这里没有指定加载 Spring 应用上下文所需的 XML 文 件,AnnotationConfigApplicationContext 通过一个配置类加载 bean。

应用上下文准备就绪之后,我们就可以调用上下文的 getBean() 方法从 Spring 容器中获取 bean。 现在你应该基本了解了如何创建Spring容器,让我们对容器中bean的 生命周期做更进一步的探究。

Last updated