高级Spring之BeanFactory 与 ApplicationContext 的区别
创始人
2024-05-14 11:17:58
0

ApplicationContext接口

@SpringBootApplication
public class A01 {private static final Logger log = LoggerFactory.getLogger(A01.class);public static void main(String[] args) throws NoSuchFieldException, IllegalAccessException, IOException {//启动SpringBoot程序的方法      //这个方法返回的结果是Spring容器,两个参数(引导类的类型,main方法传递过来的命令行参数)ConfigurableApplicationContext context = SpringApplication.run(A01.class, args);}

              通过SpringBoot的特定启动类,我们可以得到 ConfigurableApplicationContext,ApplicationContext的一个子接口,我们现在可以看这个ConfigurableApplicationContext子接口的内图:

       

           从这里我们可以知道:ApplicationContext实际上间接地继承了BeanFactory接口,对于BeanFactory而言,它提供了一些功能上的扩展,这些主要的功能扩展为ApplicationContext接口右侧的四个接口,每继承一个父接口,就意味着它又基本一项新能力,告诉我们:ApplicationContext的功能肯定要比BeanFactory的多

  • ApplicationContext 接口,是 BeanFactory 的子接口。它扩展了 BeanFactory 接口的功能,如:

    • 国际化

    • 通配符方式获取一组 Resource 资源

    • 整合 Environment 环境(能通过它获取各种来源的配置信息)

    • 事件发布与监听,实现组件之间的解耦

BeanFactory接口

        在Spring容器中, BeanFactory是spring里最顶层接口;包含了各种Bean的定义,读取bean配置文档,管理bean的加载、实例化,控制bean生命周期,维护bean之间的依赖关系

context.getBean("aaa))

       我们以常见的getBean()方法为例,实际上这个方法不是ApplicationContext提供的功能,而是间接地由BeanFactory来提供功能,如下图所示:

      ApplicationContext是怎么扩展的呢?它不是将所有的方法进行重写,而是内部组合了一个BeanFactory,你要调用 ApplicationContext的getBean(),它实际上内部是调用了BeanFactory的getBean(),功能是人家的getBean()提供的,从这里我们可以看出:BeanFactory要比 ApplicationContex更核心一些,主要的 ApplicationContext 实现都【组合】了它的功能,【组合】是指 ApplicationContext 的一个重要成员变量就是 BeanFactory

 从这里我们可以看到context容器对象里面有很多成员变量,beanFactory就是其中一个

总结:

        到底什么是 BeanFactory?

  • 它是 ApplicationContext 的父接口

  • 它才是 Spring 的核心容器, 主要的 ApplicationContext 实现都【组合】了它的功能,【组合】是指 ApplicationContext 的一个重要成员变量就是 BeanFactory

相关内容

热门资讯

喜欢穿一身黑的男生性格(喜欢穿... 今天百科达人给各位分享喜欢穿一身黑的男生性格的知识,其中也会对喜欢穿一身黑衣服的男人人好相处吗进行解...
发春是什么意思(思春和发春是什... 本篇文章极速百科给大家谈谈发春是什么意思,以及思春和发春是什么意思对应的知识点,希望对各位有所帮助,...
网络用语zl是什么意思(zl是... 今天给各位分享网络用语zl是什么意思的知识,其中也会对zl是啥意思是什么网络用语进行解释,如果能碰巧...
为什么酷狗音乐自己唱的歌不能下... 本篇文章极速百科小编给大家谈谈为什么酷狗音乐自己唱的歌不能下载到本地?,以及为什么酷狗下载的歌曲不是...
家里可以做假山养金鱼吗(假山能... 今天百科达人给各位分享家里可以做假山养金鱼吗的知识,其中也会对假山能放鱼缸里吗进行解释,如果能碰巧解...
华为下载未安装的文件去哪找(华... 今天百科达人给各位分享华为下载未安装的文件去哪找的知识,其中也会对华为下载未安装的文件去哪找到进行解...
四分五裂是什么生肖什么动物(四... 本篇文章极速百科小编给大家谈谈四分五裂是什么生肖什么动物,以及四分五裂打一生肖是什么对应的知识点,希...
怎么往应用助手里添加应用(应用... 今天百科达人给各位分享怎么往应用助手里添加应用的知识,其中也会对应用助手怎么添加微信进行解释,如果能...
客厅放八骏马摆件可以吗(家里摆... 今天给各位分享客厅放八骏马摆件可以吗的知识,其中也会对家里摆八骏马摆件好吗进行解释,如果能碰巧解决你...
苏州离哪个飞机场近(苏州离哪个... 本篇文章极速百科小编给大家谈谈苏州离哪个飞机场近,以及苏州离哪个飞机场近点对应的知识点,希望对各位有...