• ApplicationContext和BeanFactory有什么区别?


    ApplicationContext和BeanFactory都可以获得Spring上下文对象,就像下面的代码那样:

    • 用ApplicationContext获取Spring上下文对象
    import com.bite.demo.UserService;
    import org.springframework.context.ApplicationContext;
    import org.springframework.context.support.ClassPathXmlApplicationContext;
    
    public class App {
        public  static  void  main(String args[]){
            // 1.先得到spring 的上下文对象
            ApplicationContext context=new ClassPathXmlApplicationContext("spring-config.xml");
            //  2.得到bean
         UserService userService=(UserService)context.getBean("user");
         userService.sayHi();
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 用BeanFactory获取Spring上下文对象
    package com.bite.demo;
    
    import org.springframework.beans.factory.BeanFactory;
    import org.springframework.beans.factory.xml.XmlBeanFactory;
    import org.springframework.core.io.ClassPathResource;
    
    public class App2 {
        public static void main(String  args[]){
             // 1.得到spring的上下文对象
            BeanFactory beanFactory=new XmlBeanFactory( new ClassPathResource("spring-config.xml"));
           UserService userService=(UserService)beanFactory.getBean("user");
                   userService.sayHi();
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    那么他们有什么相同点和区别呢?
    相同点:都是容器管理对象,都可以获取Bean对象。
    区别:

    1. BeanFactory属于更上层的接口,ApplicationContext是BeanFactory的一个子类,(父类里面的所有东西子类都有,子类里面的所有东西父类没有),所以ApplicationContext相比于BeanFactory拥有更多的功能(更多的功能包括:国际化的支持,资源访问的支持,以及事件传播机制的支持等等)。
    2. ApplicationContext和BeanFactory加载bean机制是完全不同的,当使用BeanFactory加载时,用的是懒加载(按需加载---------使用一个Bean加载一个Bean),启动非常快,内存占用少,后期的获取速度慢;ApplicationContext是一次性加载所有Bean对象,所以在启动的时候非常慢,启动之后获取对象非常快。
  • 相关阅读:
    redis高级面试
    GaussDB T 主备搭建 切换switchover、failover
    CC0是什么,为什么它会改变NFT市场?
    worthington酶活性研究丨worthington pH值的影响
    工作中需要用到的Java知识(AQS篇)
    LQ0209 颠倒的价牌【枚举+进制】
    Oracle新特性速递:未来数据库技术的无限可能
    Java并发面试题:(一)线程的5种状态及转换
    大模型背景下软件工程的机遇与挑战
    Aspose.Email for Node.js via .NET
  • 原文地址:https://blog.csdn.net/laly123321/article/details/132781162