什么是ApplicationContext接口及其实现类

x33g5p2x  于2022-10-13 转载在 其他  
字(2.6k)|赞(0)|评价(0)|浏览(719)

在这篇快速文章中,我们将通过一个示例来研究什么是ApplicationContext接口及其实现类。

什么是ApplicationContext接口?

ApplicationContext是Spring应用程序中的中心接口,用于向应用程序提供配置信息
接口BeanFactoryApplicationContext表示Spring IoC容器。这里,BeanFactory是访问Spring容器的根接口。它提供了管理bean的基本功能。
另一方面,ApplicationContextBeanFactory的子接口。因此,它提供了BeanFactory所有的功能。此外,它还提供了更多特定于企业的功能
ApplicationContext的重要特征是

  • 解析邮件
  • 支持国际化,
  • 发布事件
  • 应用层特定上下文

这就是为什么我们使用ApplicationContext作为默认的Spring容器。

ApplicationContext接口实现类

下图显示了BeanFactoryApplicationContext接口的实现:

让我们看看所有的ApplicationContext接口实现类。

1.文件系统XML应用程序上下文

我们使用FileSystemXMLApplicationContext 类从文件系统或URL加载基于XML的Spring配置文件
例如,让我们看看如何创建这个Spring容器并为基于XML的配置加载bean:

String path = "C:/Spring-demo/src/main/resources/spring-servlet.xml";

ApplicationContext appContext = new FileSystemXmlApplicationContext(path);
AccountService accountService = appContext.getBean("studentService", StudentService.class);

2.类路径XmlApplicationContext

如果我们想从类路径加载XML配置文件,可以使用ClassPathXmlApplicationContext
FileSystemXMLApplicationContext类似,它对于测试工具以及JAR中嵌入的应用程序上下文非常有用。
例如:

ApplicationContext appContext = new ClassPathXmlApplicationContext("spring-servlet.xml");
AccountService accountService = appContext.getBean("studentService", StudentService.class);

3.XmlWebApplicationContext

如果我们在web应用程序中使用基于XML的配置,我们可以使用XmlWebApplicationContext类。
声明并通常从/WEB-INF/中的XML文件加载的配置类
例如:

public class MyXmlWebApplicationInitializer implements WebApplicationInitializer {

  public void onStartup(ServletContext container) throws ServletException {
    XmlWebApplicationContext context = new XmlWebApplicationContext();
    context.setConfigLocation("/WEB-INF/spring/applicationContext.xml");
    context.setServletContext(container);

    // Servlet configuration
  }
}

4.注解配置应用程序上下文

AnnotationConfigApplicationContext 类是在Spring3.0中引入的。它可以接受用@Configuration、@Component和JSR-330元数据注解的类作为输入。
因此,让我们看一个简单的示例,将AnnotationConfigApplicationContext容器用于基于Java的配置:

ApplicationContext appContext = new AnnotationConfigApplicationContext(StudentConfig.class);
AccountService accountService = appContext.getBean(StudentService.class);

5.注解ConfigWebApplicationContext

AnnotationConfigWebApplicationContext AnnotationConfigApplicationContext的基于web的变体。
当我们配置Spring的ContextLoaderListener servlet监听器或在web.xml文件中配置Spring MVC DispatcherServlet时,我们可能会使用这个类。
此外,从Spring3.0开始,我们还可以通过编程方式配置这个应用程序上下文容器。我们所需要做的就是实现WebApplicationInitializer接口:

public class MyWebApplicationInitializer implements WebApplicationInitializer {

  public void onStartup(ServletContext container) throws ServletException {
    AnnotationConfigWebApplicationContext context = new AnnotationConfigWebApplicationContext();
    context.register(StudentConfig.class);
    context.setServletContext(container);

    // servlet configuration
  }
}

结论

在这篇快速文章中,我们通过一个示例简要介绍了ApplicationContext接口及其实现类。

相关文章