Java BeanFactory与ApplicationContext的关系与继承体系

1585364631
2023-02-22 / 0 评论 / 103 阅读 / 正在检测是否收录...

BeanFactory与ApplicationContext的关系

  • BeanFactory是Spring的早期接口,成为Spring的Bean工厂,ApplicationContext是后期更高级接口,称之为Spring容器;
  • ApplicationContext在BeanFactory基础上对功能进行了扩展,例如:监听功能、国际化功能等。BeanFactory的API更偏向于底层,ApplicationContext的API大多数是对这些底层API的封装
  • Bean创建的主要逻辑和功能都被封装在BeanFactory中,ApplicationContext不仅继承了BeanFactory,而且ApplicationContext内部还维护着BeanFactory的引用,所以ApplicationContext与BeanFactory既有继承关系,又有融合关系
  • Bean的初始化时机不同,原始BeanFactory是在首次调用getBean时才进行Bean的创建,而ApplicationContext则是配置文件加载,容器一创建就将Bean都实例化初始化好

BeanFactory

public static void main(String[] args) {
        // 创建工厂对象
        DefaultListableBeanFactory beanFactory = new DefaultListableBeanFactory();
        // 创建一个读取器(xml文件)
        XmlBeanDefinitionReader reader = new XmlBeanDefinitionReader(beanFactory);
        // 读取配置文件给工厂
        reader.loadBeanDefinitions("beans.xml");
        // 根据id获取bean实例对象,Bean在此时创建对象
        UserService userService = (UserService) beanFactory.getBean("userService");
        System.out.println(userService);
    }

ApplicationContext

public static void main(String[] args) {
        // 读取配置文件的时候便已经实例化初始化完成
        ApplicationContext applicationContext = new ClassPathXmlApplicationContext("beans.xml");
        UserService userService = (UserService) applicationContext.getBean("userService");
        System.out.println(userService);
    }

BeanFactory与ApplicationContext的继承体系

BeanFactor的继承体系

  • BeanFactory是核心接口,项目运行过程中肯定有具体实现参与,这个具体实现就是DefaultListtableBeanFactory,而ApplicationContext内部维护的BeanFactory的实现类也是它

ApplicationContext的继承体系

  • 只在Spring基础环境下,即只导入spring-context坐标时,此时ApplicationContext的继承体系
    ApplicationContext的继承体系
  • 只在Spring基础环境下,常用的三个ApplicationContext作用如下:
    ApplicationContext的继承体系
0

评论 (0)

取消