标签:获取 scope use context init 好处 class 描述 users
一、描述
BeanFactory:
是Spring里面最低层的接口,提供了最简单的容器的功能,只提供了实例化对象和拿对象的功能;
ApplicationContext:
应用上下文,继承BeanFactory接口,它是Spring的一各更高级的容器,提供了更多的有用的功能;
1) 国际化(MessageSource)
2) 访问资源,如URL和文件(ResourceLoader)
3) 载入多个(有继承关系)上下文 ,使得每一个上下文都专注于一个特定的层次,比如应用的web层
4) 消息发送、响应机制(ApplicationEventPublisher)
5) AOP(拦截器)
二、两者装载bean的区别
BeanFactory:
BeanFactory在启动的时候不会去实例化Bean,中有从容器中拿Bean的时候才会去实例化;
//XmlBeanFactory是典型的BeanFactory。 BeanFactory factory = new XmlBeanFactory("XXX.xml"); //获取一个叫做mdzz的bean。在这个时候进行实例化。 factory.getBean("mdzz");
ApplicationContext:
ApplicationContext在启动的时候就把所有的Bean全部实例化了。它还可以为Bean配置lazy-init=true来让Bean延迟实例化;
//当我们实例化XXX.xml的时候,该文件中配置的bean都会被实例化。(该bean scope是singleton) ApplicationContext appContext = new ClassPathXmlApplicationContext("XXX.xml");
三、三种获取ApplicationContext对象引用的方法
/第一种加载方法,加载的是classpath下的配置文件。 ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml"); //第二种加载方法,加载的是磁盘路径下的文件。 ApplicationContext applicationContext = new FileSystemXmlApplicationContext("applicationContext.xml"); //第三种加载方法,XmlWebApplicationContext,从web系统中加载。 //得到配置文件后,就能拿到想要的对象。例如: HelloService helloService = (HelloService) applicationContext.getBean("userService"); //在这当中getBean中的参数为你在配置文件下,这个对象的id,一个标识。
4、区别:
Spring-1、BeanFactory和ApplicationContext的区别
标签:获取 scope use context init 好处 class 描述 users
原文地址:https://www.cnblogs.com/chenxiaoxian/p/10427089.html