ConfigurableApplicationContext和ApplicationContext的区别?
时间: 2024-01-04 22:17:58 浏览: 27
ConfigurableApplicationContext是ApplicationContext的子接口,包含了ApplicationContext的所有方法,并且重点在于对各种属性的配置。而ApplicationContext接口主要提供各种属性的get方法。因此,ConfigurableApplicationContext更加注重对应用程序上下文的配置,而ApplicationContext更加注重对应用程序上下文的访问。
举个例子,如果我们需要在应用程序上下文中注册一个新的bean,我们可以使用ConfigurableApplicationContext接口中的registerBeanDefinition()方法来实现。而如果我们需要获取应用程序上下文中已经注册的bean,我们可以使用ApplicationContext接口中的getBean()方法来实现。
另外,ApplicationContext是一个接口,而ConfigurableApplicationContext是一个抽象类,它实现了ConfigurableApplicationContext接口,并且提供了一些默认的实现。因此,我们可以通过继承ConfigurableApplicationContext类来创建自定义的应用程序上下文。
相关问题
ConfigurableApplicationContext applicationContext = SpringApplication.run(ClientApplication.class, args);
这行代码是一个 Spring Boot 应用程序的入口点。它创建了一个可配置的应用程序上下文,并将其与 `ClientApplication` 类关联起来,然后运行应用程序。
`SpringApplication.run()` 方法执行以下操作:
1. 创建一个新的 Spring 应用程序上下文。
2. 注册所有的 Bean 定义。
3. 刷新上下文,以便实例化所有的单例 Bean。
4. 运行任何 `CommandLineRunner` Bean,以便在应用程序启动时执行一些初始化操作(如果有的话)。
5. 返回应用程序上下文,以便可以与其交互。
在本例中,`ClientApplication` 是 Spring Boot 应用程序的入口点。当应用程序启动时,`SpringApplication.run()` 方法将创建并配置应用程序上下文,然后运行该应用程序。
ConfigurableApplicationContext
ConfigurableApplicationContext 是一个接口,它继承了 ApplicationContext 接口,并提供了一些额外的配置和管理应用上下文的功能。
在 Spring 框架中,ApplicationContext 是一个用于加载和管理 Bean 的容器。它提供了访问应用程序组件和配置信息的一种方式。而 ConfigurableApplicationContext 则在此基础上添加了一些扩展功能。
ConfigurableApplicationContext 定义了一些方法,例如:
1. refresh():用于刷新应用上下文,重新加载配置文件,并初始化所有的 Bean。
2. registerShutdownHook():用于注册一个 JVM 钩子,以确保在 JVM 关闭时自动关闭应用上下文。
3. addBeanFactoryPostProcessor():用于向应用上下文中添加 BeanFactoryPostProcessor,可以在容器初始化之前自定义修改 BeanFactory 的行为。
通过 ConfigurableApplicationContext,我们可以更灵活地配置和管理应用上下文,以满足特定的需求。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)