• ApplicationContext种类


    5. Types of ApplicationContext

    Spring provides different types of ApplicationContext containers suitable for different requirements. These are implementations of the ApplicationContext interface. So let’s take a look at some of the common types of ApplicationContext.

    5.1. AnnotationConfigApplicationContext

    AnnotationConfigApplicationContext class was introduced in Spring 3.0.
    It can take classes annotated with @Configuration, @Component, and JSR-330 metadata as input.

    ApplicationContext context = new AnnotationConfigApplicationContext(AccountConfig.class);
    AccountService accountService = context.getBean(AccountService.class);
    
    • 1
    • 2

    5.2. AnnotationConfigWebApplicationContext

    AnnotationConfigWebApplicationContext is a web-based variant of AnnotationConfigApplicationContext.

    We may use this class when we configure Spring’s ContextLoaderListener servlet listener or a Spring MVC DispatcherServlet in a web.xml file.

    Moreover, from Spring 3.0 onward, we can also configure this application context container programmatically. All we need to do is implement the WebApplicationInitializer interface:

    public class MyWebApplicationInitializer implements WebApplicationInitializer {
    
      public void onStartup(ServletContext container) throws ServletException {
        AnnotationConfigWebApplicationContext context = new AnnotationConfigWebApplicationContext();
        context.register(AccountConfig.class);
        context.setServletContext(container);
    
        // servlet configuration
      }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    5.3. XmlWebApplicationContext

    If we use the XML based configuration in a web application, we can use the XmlWebApplicationContext class.

    As a matter of fact, configuring this container is like the AnnotationConfigWebApplicationContext class only, which means we can configure it in web.xml, or implement the WebApplicationInitializer interface:

    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
      }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    5.4. FileSystemXMLApplicationContext

    We use the FileSystemXMLApplicationContext class to load an XML-based Spring configuration file from the file system or from URLs. This class is useful when we need to load the ApplicationContext programmatically. In general, test harnesses and standalone applications are some of the possible use cases for this.

    For example, let’s see how we can create this Spring container and load the beans for our XML-based configuration:

    String path = "C:/myProject/src/main/resources/applicationcontext/account-bean-config.xml";
    
    ApplicationContext context = new FileSystemXmlApplicationContext(path);
    AccountService accountService = context.getBean("accountService", AccountService.class);
    
    • 1
    • 2
    • 3
    • 4

    5.5. ClassPathXmlApplicationContext

    In case we want to load an XML configuration file from the classpath, we can use the ClassPathXmlApplicationContext class. Similar to FileSystemXMLApplicationContext, it’s useful for test harnesses, as well as application contexts embedded within JARs.

    So let’s see an example of using this class:

    ApplicationContext context = new ClassPathXmlApplicationContext("applicationcontext/account-bean-config.xml");
    AccountService accountService = context.getBean("accountService", AccountService.class);
    
    • 1
    • 2

    参考:
    The Spring ApplicationContext

  • 相关阅读:
    Python eval()函数详解
    冰冰学习笔记:初识环境变量
    第16章-Spring AOP中的基础API
    如何将分布式锁性能提升100倍【含面试题】
    基于vue和nodejs的项目外卖点餐订餐餐厅平台
    vmware17 虚拟机拷贝、备份、复制使用
    JVM运行时数据区-虚拟机栈
    Ajax axios JSON Fastjson
    C#中使用python(基于Process-C#自带库)
    三菱和西门子哪个更适合新手?
  • 原文地址:https://blog.csdn.net/weixin_37646636/article/details/133325590