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();
    }
}

  • 用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();
    }
}

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

  1. BeanFactory属于更上层的接口,ApplicationContext是BeanFactory的一个子类,(父类里面的所有东西子类都有,子类里面的所有东西父类没有),所以ApplicationContext相比于BeanFactory拥有更多的功能(更多的功能包括:国际化的支持,资源访问的支持,以及事件传播机制的支持等等)。
  2. ApplicationContext和BeanFactory加载bean机制是完全不同的,当使用BeanFactory加载时,用的是懒加载(按需加载---------使用一个Bean加载一个Bean),启动非常快,内存占用少,后期的获取速度慢;ApplicationContext是一次性加载所有Bean对象,所以在启动的时候非常慢,启动之后获取对象非常快。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值