【发布时间】:2021-03-29 08:03:41
【问题描述】:
我是春天的初学者。 今天在看spring core文档的时候,发现1.3章节有如下说明。 Bean Overview
除了包含有关如何创建特定 bean 的信息的 bean 定义之外,ApplicationContext 实现还允许注册在容器外部(由用户)创建的现有对象。这是通过 getBeanFactory() 方法访问 ApplicationContext 的 BeanFactory 来完成的,该方法返回 BeanFactory DefaultListableBeanFactory 实现。 DefaultListableBeanFactory 通过 registerSingleton(..) 和 registerBeanDefinition(..) 方法支持这种注册。但是,典型的应用程序只使用通过常规 bean 定义元数据定义的 bean。
我在IDEA中用下面的代码实例化了一个ApplicationContext对象,但是发现这个对象没有getBeanFactory()方法:
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("test.xml");
我看的文档是5.3.5版本的spring,我用的是同版本的spring。
我猜是不是spring改变了ApplicationContext类而忘记修改文档了。 还是我实例化的对象有问题?
提前致谢!
【问题讨论】:
-
ApplicationContext是BeanFactory,它将委托给一个内部的。您可以使用getAutowireCapableBeanFactory或使用ConfigurableApplicationContext而不是ApplicationContext来访问getBeanFactory方法。